php - Composer 优化级别 1

标签 php composer-php autoload psr-4

关于 Composer autoload optimization page :

Note: You should not enable any of these optimizations in development as they all will cause various problems when adding/removing classes. The performance gains are not worth the trouble in a development setting.

我肯定能在开发环境中看到 2 级优化(权威类图)的问题,但我无法确定问题是什么 level 1 optimizations (类映射生成)如果我遵循 PSR-4 标准。

  • 如果我添加一个未在类映射中生成的类,它将回退到 PSR-4 规则来查找该类。
  • 如果我重构(移动)一个类到不同的命名空间,它也不会在类映射中找到它并尝试使用 PSR-4 规则解析它。

在符合 PSR-4 的项目的开发环境中生成的类映射有哪些潜在问题?

最佳答案

如果您将类移动到不同的目录而不更改 namespace ,则 1 级优化可能会产生问题。由于可能有多种方法来解析单个命名空间,此类更改将由 Composer 正确处理,但当您有一个过时的类映射时可能会失败。

例子:

"autoload": {
    "psr-4": {
        "app\\": "src",
        "app\\db\\": "src/drafts/db"
    }
},

app\db\Entity 可以放在 src/drafts/db/Entity.phpsrc/db/Entity.php Composer 将按此顺序搜索类文件。通常,如果您将文件从 src/drafts/db 移动到 src/db Composer 最终会找到这个类。但是如果你有过时的类映射,Composer 会盲目地包含不存在的文件,你会得到一个致命的错误。

除了这个 apcu-autoloader 选项也会缓存未命中。因此,如果您请求一个不存在的 app/db/NewEntity 类,然后添加此类,Composer 将不会检测到此更改,因为它缓存了此类不存在的信息。

这些通常是边缘情况,通常您永远不会注意到这些细微差别。但这仍然是可能的,并且开发环境中不明显的性能提升不值得冒着损失几个小时调试 Composer 自动加载器缓存相关问题的风险。

关于php - Composer 优化级别 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50035317/

相关文章:

php - XAMPP centos 通过 PHP 上传的文件不显示

php - 在 PHP 中解析 Wordpress XML 文件

php - Composer创建项目错误

php - 自动加载函数最佳实践

php - 自动加载 Composer 包中的 PHP 文件

php - 当查询为空时不回显任何内容

php - 从php导出后如何在Excel中显示多个子列

composer-php - 如何升级 Composer 的版本

composer-php - Composer 更新 - RuntimeException

php - 我应该在 PHP 中始终使用完全限定的类名吗?