V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pilishen
V2EX  ›  问与答

这就是现代 PHP 该有的样子(一)

  •  
  •   pilishen · 2018-04-10 21:29:44 +08:00 · 1802 次点击
    这是一个创建于 2430 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文来自 medium----原文链接; 欢迎作客我们的 php&Laravel 学习群:109256050

    这个标题是不是很自负?没错!尽管我已经使用 php 工作很多年了,我仍然不能明确的说出这项工作的最佳实践方式和最好的工具,但接下来我要开始试着这样做。

    我看到开发者使用 php 进行开发的工作方式发生了真正的变化,不仅是这门语言随着版本的更新和改进明显的变得越来越成熟和健壮,而且围绕它的整个生态系统正在发生改变。

    开发者发布了很多新的工具、第三方库、框架和文章,定义了很多设计模式来使代码更加的优雅和易于理解。一些人在想办法让工作(和你作为开发者的生活)更有效率、简洁和有趣

    我并不在新趋势的早期就开始拥抱它们,实际上,我只会采用那些当我确定它们背后有社区支持并且我真的觉得它会提升我的工作的新工具。我经常干的事是努力让我的代码符合最佳实践。

    基于这些缘由,我花时间使用像 Composer 和 PHPUnit 这样的工具。大概在一年前,我向所有这些闪亮的新事物敞开了我的心。

    首先是 PSR,然后是 Composer、PHPUnit、Travis-ci 和一些其他的库和极好的工具。我甚至开始使用 IDE ( Vim FTW,与 Xdebug 集成的 PHPStrom 是一个稳健开发流的必须工具)!

    什么是现代?

    网页上充斥着大量的关于 PHP 多么不好、如果你不得不使用 PHP 代码工作你的生活将多糟糕、这个语言多么的丑和其他的你能想到的文章!

    如果你继续与以前遗留代码一起工作,也许你的生活不会那么好,但是如果你有机会在一个新项目上工作,并且能够使用所有的新工具,你将看到我要讨论的新 PHP。

    我每天都有一些 PHP 工作上的问题,但是我们不能对语言、社区和生态系统发生的变化视而不见。前面还有很长的路要走,但 PHP 领域已经成熟了。

    我开始为我工作的公司创建内部 API 的 SDK,作为一个宠物项目,并决定遵循最佳实践。他们中的大多数我已经在做了,但是我在做一些事情上做了一些改变。这些变化和我去年学到的都是本文的主题,我称之为现代 PHP。

    我开始为我工作的公司创建内部 API 的 SDK,仅作为一个兴趣项目并决定遵循最佳实践。他们中的大多数我已经在做了,但是我在做一些事情的方式上做了一些改变。这些变化和我去年学到的知识都是本文的主题,我称之为现代 PHP。

    让我们来开始工作流

    正如我所说,我是这 IDE 的新手,phpStorm 是一个非常非常伟大的软件,我对它一见钟情。这是我的第一个也是唯一的 IDE。这是我第一次尝试 IDE,我甚至不需要尝试任何其他 IDE。

    与 XDebug 的结合非常的完美,PHP 名称空间解析,集成 Composer,集成 GIT,自动补全,代码生成,代码重构等等。

    你不是必须使用 IDE,实际上,这一点完全是个人爱好。你应该使用任何适合您的需求的工具- Vim,Atom,Emacs,Bracket,NetBeans,phpStorm,Eclipse,等等。这里有两个要点是生产力和效率。您的 IDE /文本编辑器必须至少在这两点上帮助您。

    对我来说,集成调试器是一个很重要的功能。为大项目编写代码(实际上也适用于小项目),你必须使用一个合用的调试器。让我们忘记那些var_dumpsprint_rs。你需要在运行时将这些变量输出出来,分析跟踪栈,设置断点。这些东西是必不可少的并使开发和重构更加容易。

    我甚至不知道有其他的选择,XDebug 有你需要的一切。你有几分钟时间吗?如果你还没这么做,花一点时间来安装 Xdebug,整合进你的 IDE 或文本编辑器。开始使用正确的工具调试代码。

    GitHub 是另一个我想让你多加留意的工具。这里的重点是整合。

    有几个工具整合与 GitHub 上你应该开始使用他们。这些工具可以在持续的集成过程中生成度量、运行测试、为您运行作业以及在工作流程中做各种事情。整合是你开始使用 GitHub 的一个很好的理由。

    依赖管理

    现代 PHP 生态系统的另一个要点是依赖管理,而 Composer 就是做这个工作的工具。

    Composer 已经 5 岁了,但在我看来,大量的功能在近几年才采用。也许是因为我不是一个早期拥抱着或者因为 PHP 开发者都不愿改变。

    这个工具提供了一个前端 Packagist,它是一个 PHP 包库,由 php 库、项目和工具组成,它们的源代码存储在 GitHub (或类似的其他地方比如 bitbucket )。

    我在本文中讨论的所有库,或者可能是您的其中一个项目,可以用简单的下面方法添加到项目中。

    $ composer require package_vendor/package_name

    如果你不知道某个包的发行方,你可以通过检索包来找到和安装合适的包

    $ composer search package_name 如果仅用来管理依赖,Composer 会是一个伟大的工具,但是它还做了很多其他的事。花点时间来安装 Composer 并阅读它的文档。

    正确使用命令行接口

    我非常喜欢使用 CLI 接口快速地尝试想法。对我来说,一个伟大的工具是 IPython REPL。它可以帮助你补全你的代码,让你轻松定义函数,方便使用文档和其他一些令人惊讶的功能。遗憾的是这个工具是 Python 的,而不是 PHP 的。

    在 PHP 世界中,我们有一种叫做“交互模式”的东西,可以通过终端访问,键入下面内容:

    $ php -a
    Interactive mode enabled
    php >
    

    此时,您处于交互模式,可以开始测试某些东西,它工作了,但是这个工具太不直观了,应为我知道 IPython 是怎么工作的,所以我尝试了很多次,最后还是放弃使用它了。

    幸运的是有一个很酷的新的 CLI (命令行界面)和它的名字是 Psysh。psysh 是一个了不起的工具,充满了有趣的功能,可以使用 Composer 全局或者本地安装。

    对于我来说 psysh 最好的特征是内嵌文档。访问一个 PHP 函数的文档不需要转去 php.net 非常方便。缺点是,在功能完全发挥之前,您需要做一些额外的配置。

    安装后,输入以下命令(我用 Debian 这里,这可能不适合所有人)来让它正常工作

    $ apt-get install php7.1-sqlite3
    $ mkdir /usr/local/share/psysh
    $ wget http://psysh.org/manual/en/php_manual.sqlite -o /usr/local/share/psysh/php_manual.sqlite
    

    第一条命令不是必须的,如果你已经安装来 Sqlite 你可以跳过这步。第二条命令创建来一个保存文档的目录,第三条命令下载文档并保存到第二步创建的目录中,注意所有的命令必须以 root 用户执行。

    然后你可以这样:

    去 Psysh 官网学习更多的关于这个工具的知识

    4 条回复    2018-04-11 09:27:15 +08:00
    GooMS
        1
    GooMS  
       2018-04-11 02:01:28 +08:00 via Android
    不会 composer 的都已经扫到垃圾堆了,这是来上坟么
    abowloflrf
        2
    abowloflrf  
       2018-04-11 08:01:01 +08:00 via iPhone
    现在在一家公司实习,没用 Composer,没遵循 psr,自动加载都是自己定的标准,读代码都吃力,难受。
    p23XnFNH1Wq953rV
        3
    p23XnFNH1Wq953rV  
       2018-04-11 09:20:22 +08:00
    写的很用心, 希望持续更新~
    lianxiaoyi
        4
    lianxiaoyi  
       2018-04-11 09:27:15 +08:00
    @GooMS 不用 composer 被扫到垃圾堆。。。。。。那派派工程师岂不都要去垃圾堆了????币蛋交易市场工程师也都要去垃圾堆了??? 真尼玛搞笑。。。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:00 · PVG 04:00 · LAX 12:00 · JFK 15:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.