【发布时间】:2020-02-14 16:52:43
【问题描述】:
这是我的问题:我已经将一个复杂的应用程序升级到 PHP 7.4,是的,我没有进行足够彻底的测试。
现在我想使用较旧的 PHP 版本运行任务,但它无法解析我的所有供应商文件。这是错误和行。这是 PHP 7.4 的新特性。
PHP 解析错误:语法错误,意外的 '?',第 25 行的 .\vendor\sentry\sentry\src\functions.php 中的预期变量 (T_VARIABLE)
function captureMessage(string $message, ?Severity $level = null): ?string
直到现在我还以为,Composers vendor\autoload.php 仅在需要时才在供应商目录中加载类和函数。不会加载未使用的类,因此不会加载用 PHP 7.4 编写的违规文件。
不幸的是,我注意到require_once('./vendor/autoload.php') 足以看到解析错误。是否可以以某种方式配置 Composer,它不会预加载供应商文件,而是仅在请求类或函数时才加载它们?
【问题讨论】:
-
这是 Composer 的工作方式,所以您的代码可能在某处使用该文件。
-
@ceejayoz 不,有问题的包使用
autoload: files指令在每次页面加载时包含文件。详情见我的回答。 -
有些像
function name(): ?string这样的功能在旧版本中无法运行。
标签: php composer-php php-7.4