【发布时间】:2021-01-30 04:28:06
【问题描述】:
vendor/autoload.php 两个文件基本相同:
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit1e055ec2de42b90d5e1653b608643281::getLoader();
在两个文件中:
$composer_object = ComposerAutoloaderInit1e055ec2de42b90d5e1653b608643281::getLoader();
var_dump($composer_object);
> object(Composer\Autoload\ClassLoader
这让我深入研究了 Composer 的自动加载文件(这很有见地),但我仍然感到困惑:
$var = require_once '/srv/path_to_main/vendor/autoload.php';
var_dump($var);
> boolean true
$var = require_once '/srv/path_to_subdir/vendor/autoload.php';
var_dump($var);
> object(Composer\Autoload\ClassLoader
为什么要求第一个文件返回boolean true,而不是object(Composer\Autoload\ClassLoader?
更新
我创建了vendor/autoload.php、vendor/aught.php 的副本,当我需要它时,它会返回对象。
【问题讨论】:
-
我认为 require / include 返回的内容是从它需要/包含的文件返回的内容。我相信你说得对,因为你所包含的自动加载器没有指定退货。 IE 成功时为真/假,失败时出错。 php.net/manual/en/function.include.php#example-128
-
谢谢,@AlexBarker。这也是我的理解。但指定的自动加载器确实返回对象。并检查我的更新,当我复制文件并要求该文件时,它确实返回了预期的对象。
标签: php composer-php require require-once