require_once returns true 而不是预期的对象

require_once returns true instead of expected object

两个 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

为什么需要第一个文件 return boolean true,而不是 object(Composer\Autoload\ClassLoader

更新

我创建了 vendor/autoload.phpvendor/aught.php 的副本,当我需要那个副本时,它 return 就是对象。

require_once returns true 而不是 return 值(如果文件已包含或需要)。

如果您需要两次,您会发现子目录也得到 true

require_once '/srv/path_to_subdir/vendor/autoload.php';
$var = require_once '/srv/path_to_subdir/vendor/autoload.php';
var_dump( $var )