require_once返回true而不是预期的对象

问题描述

两个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.PHPvendor/aught.PHP的副本,当我需要该副本时,它会返回对象。

解决方法

<?php /** * @ORM\JoinColumn(name="commentary_id",nullable=true) * @ORM\OneToOne(targetEntity="App\Entity\Commentary") */ private $commentary; 返回require_once而不是返回值(如果已经包含或需要该文件)。

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

true