PHP Composer提供的Git子模块没有提供什么?

时间:2015-05-18 01:31:40

标签: php git composer-php git-submodules

我正在开发一个使用Composer(https://getcomposer.org/)来引用各种PHP库的项目。

我也使用git子模块(http://git-scm.com/docs/git-submodule)来引用各种JavaScript库(其中库指向特定的发布标记,例如" v1.2.34")。

为了简化项目,我正在考虑放弃Composer,只支持使用子模块,除非Composer提供Git Submodules不提供的功能。那么, PHP Composer提供的Git子模块不是什么

1 个答案:

答案 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,并且它依赖于库YZ,则Composer将安装所有这三个。

作曲家supports more flexible versioning,例如“使用最新的1.2.x版本”,当使用现代PHP时,它是事实上的标准工具。