The PSR-0 Class Loader
Warning: You are browsing the documentation for Symfony 3.x, which is no longer maintained.
Read the updated version of this page for Symfony 7.1 (the current stable version).
If your classes and third-party libraries follow the PSR-0 standard, you can use the ClassLoader class to load all of your project's classes.
Tip
You can use both the ApcClassLoader
and the XcacheClassLoader
to cache a ClassLoader
instance.
Usage
Registering the ClassLoader autoloader is straightforward:
1 2 3 4 5 6 7 8 9 10 11 12
require_once '/path/to/src/Symfony/Component/ClassLoader/ClassLoader.php';
use Symfony\Component\ClassLoader\ClassLoader;
$loader = new ClassLoader();
// to enable searching the include path (e.g. for PEAR packages)
$loader->setUseIncludePath(true);
// ... register namespaces and prefixes here - see below
$loader->register();
Use addPrefix() or addPrefixes() to register your classes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// register a single namespaces
$loader->addPrefix('Symfony', __DIR__.'/vendor/symfony/symfony/src');
// registers several namespaces at once
$loader->addPrefixes([
'Symfony' => __DIR__.'/../vendor/symfony/symfony/src',
'Monolog' => __DIR__.'/../vendor/monolog/monolog/src',
]);
// registers a prefix for a class following the PEAR naming conventions
$loader->addPrefix('Twig_', __DIR__.'/vendor/twig/twig/lib');
$loader->addPrefixes([
'Swift_' => __DIR__.'/vendor/swiftmailer/swiftmailer/lib/classes',
'Twig_' => __DIR__.'/vendor/twig/twig/lib',
]);
Classes from a sub-namespace or a sub-hierarchy of PEAR classes can be looked for in a location list to ease the splitting a sub-set of classes into another package for large projects:
1 2 3 4 5 6
$loader->addPrefixes([
'Doctrine\Common' => __DIR__.'/vendor/doctrine/common/lib',
'Doctrine\DBAL\Migrations' => __DIR__.'/vendor/doctrine/migrations/lib',
'Doctrine\DBAL' => __DIR__.'/vendor/doctrine/dbal/lib',
'Doctrine' => __DIR__.'/vendor/doctrine/orm/lib',
]);
In this example, if you try to use a class in the Doctrine\Common
namespace
or one of its children, the autoloader will first look for the class under
the doctrine-common
directory. If not found, it will then fallback to
the default Doctrine
directory (the last one configured) before giving
up. The order of the prefix registrations is significant in this case.