对于 Composer 的介绍,差不多进入尾声了,再继续介绍一点相关的内容。
一、autoload 优化
使用 composer ,一个好处就是会自动生成 autoload.php 文件,至于 autoload 怎么使用等问题,请查看相关文档。
在这里我想提醒的是,在使用 composer 时,大家可能忽略掉的一个操作,那就是可能忽略了对 autoload 进行优化,特别是在生产环境,强烈推荐对其进行优化。
autoload 优化有不同的层级,或者说不同的方式。
一种方式是在 composer.json 文件中的 config 键里设置
"config": {
"optimize-autoloader": true
},
更多方式及其背后的原理请查看文档:
https://getcomposer.org/doc/articles/autoloader-optimization.md
有人做了一个测试:
http://mouf-php.com/optimizing-composer-autoloader-performance
测试了一个基于某框架的 hello world 应用,优化 autoload 后性能提升约 37%。
可以看到,一个小小的操作,带来的性能提升是相当可观的。
另外,如果敢兴趣,也可以查看一下 composer 项目里 autoload 相关的一个已经合并的 PR (Pull Request):
Speedup autoloading on PHP 5.6 & 7.0+ using static arrays #5174
链接:
https://github.com/composer/composer/pull/5174
二、Drupal 核心更新
Drupal 核心发布新版本时,需要对其进行及时更新,代码部分则由 Composer 完成更新:
composer update drupal/core symfony/* --with-dependencies -vvv
代码更新后,需要进一步更新数据库,可以访问 /update.php 或运行 drush updb 命令完成数据库的更新。
参考:
https://github.com/drupal-composer/drupal-project#updating-drupal-core
三、Commerce 更新
composer update --with-dependencies drupal/commerce drupal/commerce_price drupal/commerce_product drupal/commerce_order drupal/commerce_payment drupal/commerce_payment_example drupal/commerce_checkout drupal/commerce_tax drupal/commerce_cart drupal/commerce_log drupal/commerce_store drupal/commerce_promotion
参考:
https://docs.drupalcommerce.org/commerce2/developer-guide/install-update/updating
四、composer.lock 文件
如果使用了版本控制工具,比如 git,一定要将 composer.lock 文件放入代码库管理起来。
五、composer why
composer why 命令,查看为什么这个包被安装,被哪个包列为了依赖。在 Troubleshooting 的时候可能会用到。
六、提议:在Drupal 核心里提供对 Composer 的支持
一个来自 Webchick 的提议,一个值得关注的提议:
Proposal: Composer Support in Core initiative
链接: