1.应用场景
主要用于了解,PHP项目/功能开发可以采用的方式,帮助我们快速进行项目开发。 |
2.学习/操作
1.文档阅读2.整理输出什么是组件组件是一组打包的代码,是一系列相关的类、接口和Trait,用于帮助我们解决PHP应用中某个具体问题。 例如,你的PHP应用需要收发HTTP请求,可以使用现成的组件如guzzle/guzzle实现。 我们使用组件不是为了重新实现已经实现的功能,而是把更多时间花在实现项目的长远目标上。 优秀的PHP组件具备以下特性:
组件 vs 框架我们选择框架时,要为这个框架的工具投入很多,框架通常会提供大量工具,但却没有提供我们所需的某个工具时,痛苦就转嫁到我们头上,我们要寻找并集成自定义的PHP库。把第三方代码集成到框架中是件难事,因为第三方代码和框架可能没有使用相同的接口。 选择框架时,我们看中的是框架的未来,但是谁又能保证某个框架始终是完成某项工作最好的工具呢? 存在多年的大型项目必须有好的表现,而且要时刻做好调整,如果选错了PHP框架,可能无法做到这一点。 较旧的PHP框架可能由于缺乏社区支持而变慢或过时,这些旧框架通常使用过程式代码编写,而没有使用新式的面向对象代码以及PHP的一些新特性,总之,决定是否使用PHP框架时,要考虑的事情很多。 庆幸的是,Laravel在这些担忧方面表现良好,因此才能在众多PHP框架中脱颖而出,从某种意义上来说,Laravel也是个基于组件开发的框架(核心组件是自身的Illuminate库,功能实现上则大量依赖第三方组件),相比Symfony而言,上手又比较简单,所以兼具了扩展性和易用性。 但是,Laravel也存在一些不足,比如Laravel自身的组件不能轻易解耦,用于Laravel框架之外(但是相信这种状况会有好转,比如其数据库和队列组件就可以解耦出去)。 综合来看,Laravel仍是一个出色的框架,能帮组我们快速创建强大的应用。 那我们应该使用组件还是框架呢? 答案:使用正确的工具做正确的事,如果能通过一些PHP组件快速实现小型项目,那就使用组件,如果有多个团队成员开发大型项目,而且能从框架提供的约定准则和结构中受益,那就使用框架(如果是在纠结使用什么框架,那么选择Laravel吧,它不会让你失望),使用框架能够引导并加速项目的开发。 使用组件Packagist我们在Packagist中查找PHP组件,这个网站用于收集PHP组件,最好的PHP组件在Packagist中都能找到。 比如我们想使用一个HTTP组件用于收发HTTP消息,在搜索框中搜索HTTP,得到的第一个结果就是Guzzle,就用它吧。
ComposerPackagist是查找PHP组件的社区,Composer则是安装PHP组件的工具。 Composer是PHP的依赖管理器,运行在命令行中,你告诉Composer需要哪些组件,Composer会下载并把这些组件自动加载到你的项目中,就这么简单。 Composer和Packagist紧密合作,如果你告诉Composer想要使用 此外,Composer会为项目中的所有PHP组件自动生成符合PSR标准的自动加载器,有效地抽象了依赖管理和自动加载,所以,对PHP社区来说,Composer是最重要的附加工具,没有之一,想想之前我们要使用诸如include、require、spl_autoload_register来手动实现自动加载的痛苦日子,这一点也不为过。 示例项目下面我们通过一个示例项目来演示如何使用Composer和组件来开发一个PHP应用,这个应用的作用是扫描一个CSV文件中的URL,找出死链,该应用会向每个URL发HTTP请求,如果返回的HTTP状态码大于等于400,就把这个死链发给标准输出。 这是一个命令行应用,开发好之后,我们会执行这个脚本,传入csv文件的路径,在标准输出中显示死链列表。 安装组件开始之前,先看看哪些任务可以使用现有的PHP组件解决:我们需要一个可以迭代处理csv文件数据的组件,此外还要向csv文件中的每个URL发送HTTP请求,因此还需要一个可以发送HTTP请求并检查HTTP响应的组件。 浏览Packagist后,我们找到
执行命令过程截图: Composer会将依赖安装到根目录的
这样的好处是,composer会下载这个文件中列出的具体版本,而不管Packagist中可用的最新版本是多少,你应该把
自动加载接下来我们来编写应用代码,在根目录下创建一个
Composer创建的自动加载器其实就是个名为 编写代码下面我们正式使用Guzzle和CSV组件编写
下面我们在 然后打开终端,执行
我们传入了两个参数,第一个是脚本文件 一切正常~~ 代码见: 或者 参见:GitHub - ningxiaofa/yapf at develop
后续补充 ... |
3.问题/补充
TBD |
4.参考
参见上面文档列表 |
后续补充
...