我正在开发一个使用Composer(https://getcomposer.org/)来引用各种PHP库的项目。
我也使用git子模块(http://git-scm.com/docs/git-submodule)来引用各种JavaScript库(其中库指向特定的发布标记,例如" v1.2.34")。
为了简化项目,我正在考虑放弃Composer,只支持使用子模块,除非Composer提供Git Submodules不提供的功能。那么, PHP Composer提供的Git子模块不是什么?
答案 0 :(得分:3)
坚持使用Composer的一个原因是handles autoloading for you:
对于指定自动加载信息的库,Composer会生成
vendor/autoload.php
文件。您只需包含此文件即可免费进行自动加载。require 'vendor/autoload.php';
这使得使用第三方代码变得非常容易。例如:如果你的项目依赖于monolog,你可以从它开始使用类,它们将被自动加载。
$log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler( 'app.log', Monolog\Logger::WARNING )); $log->addWarning('Foo');
您甚至可以通过向
autoload
添加composer.json
字段将自己的代码添加到自动加载器。{ "autoload": { "psr-4": {"Acme\\": "src/"} } }
Composer将为
Acme
命名空间注册PSR-4自动加载器。
作为Jack points out,Composer还处理依赖项。也就是说,如果您想使用库X
,并且它依赖于库Y
和Z
,则Composer将安装所有这三个。
作曲家supports more flexible versioning,例如“使用最新的1.2.x版本”,当使用现代PHP时,它是事实上的标准工具。