当前位置:K88软件开发文章中心编程工具Composer → 文章内容

Composer 架构

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:15:07

可以使用空的前缀,像这样:{ "autoload": { "psr-0": { "": "src/" } }}Classmapclassmap 引用的所有组合,都会在 install/update 过程中生成,并存储到 vendor/composer/autoload_classmap.php 文件中。这个 map 是经过扫描指定目录(同样支持直接精确到文件)中所有的 .php 和 .inc 文件里内置的类而得到的。你可以用 classmap 生成支持支持自定义加载的不遵循 PSR-0/4 规范的类库。要配置它指向需要的目录,以便能够准确搜索到类文件。实例:{ "autoload": { "classmap": ["src/", "lib/", "Something.php"] }}Files如果你想要明确的指定,在每次请求时都要载入某些文件,那么你可以使用 'files' autoloading。通常作为函数库的载入方式(而非类库)。实例:{ "autoload": { "files": ["src/MyLibrary/functions.php"] }}autoload-dev (root-only)This section allows to define autoload rules for development purposes.Classes needed to run the test suite should not be included in the main autoload rules to avoid polluting the autoloader in production and when other people use your package as a dependency.Therefore, it is a good idea to rely on a dedicated path for your unit tests and to add it within the autoload-dev section.Example:{ "autoload": { "psr-4": { "MyLibrary\\": "src/" } }, "autoload-dev": { "psr-4": { "MyLibrary\\Tests\\": "tests/" } }}include-path不建议:这是目前唯一支持传统项目的做法,所有新的代码都建议使用自动加载。 这是一个过时的做法,但 Composer 将仍然保留这个功能。一个追加到 PHP include_path 中的列表。实例:{ "include-path": ["lib/"]}可选。target-dirDEPRECATED: This is only present to support legacy PSR-0 style autoloading, and all new code should preferably use PSR-4 without target-dir and projects using PSR-0 with PHP namespaces are encouraged to migrate to PSR-4 instead.定义当前包安装的目标文件夹。若某个包的根目录,在它申明的命名空间之下,将不能正确的使用自动加载。而 target-dir 解决了这个问题。Symfony 就是一个例子。它有一些独立的包作为组件。Yaml 组件就放在 Symfony\Component\Yaml 目录下,然而这个包的根目录实际上是 Yaml。为了使自动加载成为可能,我们需要确保它不会被安装到 vendor/symfony/yaml,而是安装到 vendor/symfony/yaml/Symfony/Component/Yaml,从而使 Symfony 定义的 autoloader 可以从 vendor/symfony/yaml 加载它。要做到这一点 autoload 和 target-dir 应该定义如下:{ "autoload": { "psr-0": { "Symfony\\Component\\Yaml\\": "" } }, "target-dir": "Symfony/Component/Yaml"}可选。minimum-stability (root-only)这定义了通过稳定性过滤包的默认行为。默认为 stable(稳定)。因此如果你依赖于一个 dev(开发)包,你应该明确的进行定义。对每个包的所有版本都会进行稳定性检查,而低于 minimum-stability 所设定的最低稳定性的版本,将在解决依赖关系时被忽略。对于个别包的特殊稳定性要求,可以在 require 或 require-dev 中设定(请参考 Package links)。可用的稳定性标识(按字母排序):dev、alpha、beta、RC、stable。prefer-stable (root-only)当此选项被激活时,Composer 将优先使用更稳定的包版本。使用 "prefer-stable": true 来激活它。repositories (root-only)使用自定义的包资源库。默认情况下 composer 只使用 packagist 作为包的资源库。通过指定资源库,你可以从其他地方获取资源包。Repositories 并不是递归调用的,只能在“Root包”的 composer.json 中定义。附属包中的 composer.json 将被忽略。支持以下类型的包资源库:composer: 一个 composer 类型的资源库,是一个简单的网络服务器(HTTP、FTP、SSH)上的 packages.json 文件,它包含一个 composer.json 对象的列表,有额外的 dist 和/或 source 信息。这个 packages.json 文件是用一个 PHP 流加载的。你可以使用 options 参数来设定额外的流信息。vcs: 从 git、svn 和 hg 取得资源。pear: 从 pear 获取资源。package: 如果你依赖于一个项目,它不提供任何对 composer 的支持,你就可以使用这种类型。你基本上就只需要内联一个 composer.json 对象。更多相关内容,请查看 资源库。实例:{ "repositories": [ { "type": "composer", "url": "http://packages.example.com" }, { "type": "composer", "url": "https://packages.example.com", "options": { "ssl": { "verify_peer": "true" } } }, { "type": "vcs", "url": "https://github.com/Seldaek/monolog" }, { "type": "pear", "url": "http://pear2.php.net" }, { "type": "package", "package": { "name": "smarty/smarty", "version": "3.1.7", "dist": { "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", "type": "zip" }, "source": { "url": "http://smarty-php.googlecode.com/svn/", "type": "svn", "reference": "tags/Smarty_3_1_7/distribution/" } } } ]}注意: 顺序是非常重要的,当 Composer 查找资源包时,它会按照顺序进行。默认情况下 Packagist 是最后加入的,因此自定义设置将可以覆盖 Packagist 上的包。config (root-only)下面的这一组选项,仅用于项目。支持以下选项:process-timeout: 默认为 300。处理进程结束时间,例如:git 克隆的时间。Composer 将放弃超时的任务。如果你的网络缓慢或者正在使用一个巨大的包,你可能要将这个值设置的更高一些。use-include-path: 默认为 false。如果为 true,Composer autoloader 还将在

上一页  [1] [2] [3] [4]  下一页


Composer 架构