如何创建网站教程视频,网站怎么容易被百度收录,盘搜搜,可以先做网站后备案么本篇文章主要介绍了PHP组件、框架以及Composer#xff0c;具有一定的学习价值#xff0c;感兴趣的朋友可以了解一下。什么是组件组件是一组打包的代码#xff0c;是一系列相关的类、接口和Trait#xff0c;用于帮助我们解决PHP应用中某个具体问题。例如#xff0c;你的PHP…本篇文章主要介绍了PHP组件、框架以及Composer具有一定的学习价值感兴趣的朋友可以了解一下。什么是组件组件是一组打包的代码是一系列相关的类、接口和Trait用于帮助我们解决PHP应用中某个具体问题。例如你的PHP应用需要收发HTTP请求可以使用现成的组件如guzzle/guzzle实现。我们使用组件不是为了重新实现已经实现的功能而是把更多时间花在实现项目的长远目标上。优秀的PHP组件具备以下特性作用单一专注于解决一个问题而且使用简单的接口封装功能小型小巧玲珑只包含解决某个问题所需的最少代码合作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想要使用guzzlehttp/guzzle组件Composer会从Packagist中获取guzzlehttp/guzzle组件找到这个组件的仓库地址确定要使用哪个版本还能找出这个组件的依赖然后把guzzlehttp/guzzle组件及其依赖下载到你的项目中。此外Composer会为项目中的所有PHP组件自动生成符合PSR标准的自动加载器有效地抽象了依赖管理和自动加载所以对PHP社区来说Composer是最重要的附加工具没有之一想想之前我们要使用诸如include、require、spl_autoload_register来手动实现自动加载的痛苦日子这一点也不为过。关于Composer的安装和使用这里不赘述请参考Composer中文网。示例项目下面我们通过一个示例项目来演示如何使用Composer和组件来开发一个PHP应用这个应用的作用是扫描一个CSV文件中的URL找出死链该应用会向每个URL发HTTP请求如果返回的HTTP状态码大于等于400就把这个死链发给标准输出。这是一个命令行应用开发好之后我们会执行这个脚本传入csv文件的路径在标准输出中显示死链列表。安装组件开始之前先看看哪些任务可以使用现有的PHP组件解决我们需要一个可以迭代处理csv文件数据的组件此外还要向csv文件中的每个URL发送HTTP请求因此还需要一个可以发送HTTP请求并检查HTTP响应的组件。浏览Packagist后我们找到guzzlehttp/guzzle和league/csv两个组件前者用于处理HTTP消息后者用于处理CSV数据。下面我们在项目最顶层运行如下命令composer require guzzlehttp/guzzlecomposer require league/csvComposer会将依赖安装到根目录的vendor目录下安装完成后会在根目录下生成composer.json和composer.lock文件composer.lock文件中会列出项目使用的所有PHP组件以及组件的具体版本号这其实是锁定了项目让项目只能使用具体版本的PHP组件。这样的好处是composer会下载这个文件中列出的具体版本而不管Packagist中可用的最新版本是多少你应该把composer.lock文件纳入版本控制这样让团队成员使用的PHP版本和你一样如果本地开发和服务器使用的PHP组件版本相同可以尽量降低由组件版本不同导致的bug。如果确实要下载最新版本的组件并更新composer.lock可以使用composer update命令。自动加载接下来我们来编写应用代码在根目录下创建一个scan.php文件然后在该文件顶部使用require导入Composer创建的自动加载器require vendor/autoload.php;Composer创建的自动加载器其实就是个名为autoload.php的文件保存在vendor目录中Composer下载各个PHP组件时会检查每个组件的composer.json文件确定如何加载该组件得到这个信息后Composer会在本地为该组件创建一个符合PSR标准的自动加载器。这样我们就可以实例化项目中的任何PHP组件这些组件按需自动加载。编写代码下面我们正式使用Guzzle和CSV组件编写scan.php代码//使用composer自动加载器require vendor/autoload.php;//实例Guzzle Http客户端$client new GuzzleHttp\Client();//打开并迭代处理CSV$csv League\Csv\Reader::createFromPath($argv[1]);foreach ($csv as $csvRow) {try {//发送HTTP GET请求$httpResponse $client-get($csvRow[0]);//检查HTTP响应的状态码if($httpResponse-getStatusCode() 400) {throw new Exception();}} catch (Exception $e) {//把死链发给标准输出echo $csvRow[0] . PHP_EOL;}}下面我们在urls.csv中添加一些URL一行一个而且至少有一个是死链然后打开终端执行scan.php脚本php scan.php urls.csv我们传入了两个参数第一个是脚本文件scan.php的路径另一个是CSV文件的路径。输出如下相关教程PHP视频教程