Skip to content
Advertisement

require_once returns true instead of expected object

Both vendor/autoload.php files are basically identical:

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit1e055ec2de42b90d5e1653b608643281::getLoader();

In both files:

$composer_object = ComposerAutoloaderInit1e055ec2de42b90d5e1653b608643281::getLoader();
var_dump($composer_object);
> object(ComposerAutoloadClassLoader

This has had me digging into Composer’s autoload files (which has been insightful), but I’m still perplexed:

$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(ComposerAutoloadClassLoader

Why does requiring the first file return boolean true, and not object(ComposerAutoloadClassLoader?

Update

I created a copy of vendor/autoload.php, vendor/aught.php and when I require that one, it returns the object.

Advertisement

Answer

require_once returns true instead of the return value if the file has already been included or required.

You’ll find you get true for the subdir one as well if you require it twice:

require_once '/srv/path_to_subdir/vendor/autoload.php';
$var = require_once '/srv/path_to_subdir/vendor/autoload.php';
var_dump( $var )
User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement