Cache a Class Loader
Edit this pageWarning: You are browsing the documentation for Symfony 2.3, which is no longer maintained.
Read the updated version of this page for Symfony 6.3 (the current stable version).
Cache a Class Loader
Introduction
Finding the file for a particular class can be an expensive task. Luckily,
the ClassLoader component comes with two classes to cache the mapping
from a class to its containing file. Both the ApcClassLoader
and the XcacheClassLoader wrap
around an object which implements a findFile()
method to find the file
for a class.
Note
Both the ApcClassLoader
and the XcacheClassLoader
can be used
to cache Composer's autoloader.
ApcClassLoader
2.1
The ApcClassLoader
class was introduced in Symfony 2.1.
ApcClassLoader
wraps an existing class loader and caches calls to its
findFile()
method using APC:
1 2 3 4 5 6 7 8 9 10 11 12 13
require_once '/path/to/src/Symfony/Component/ClassLoader/ApcClassLoader.php';
// instance of a class that implements a findFile() method, like the ClassLoader
$loader = ...;
// sha1(__FILE__) generates an APC namespace prefix
$cachedLoader = new ApcClassLoader(sha1(__FILE__), $loader);
// register the cached class loader
$cachedLoader->register();
// deactivate the original, non-cached loader if it was registered previously
$loader->unregister();
XcacheClassLoader
2.1
The XcacheClassLoader
class was introduced in Symfony 2.1.
XcacheClassLoader
uses XCache to cache a class loader. Registering
it is straightforward:
1 2 3 4 5 6 7 8 9 10 11 12 13
require_once '/path/to/src/Symfony/Component/ClassLoader/XcacheClassLoader.php';
// instance of a class that implements a findFile() method, like the ClassLoader
$loader = ...;
// sha1(__FILE__) generates an XCache namespace prefix
$cachedLoader = new XcacheClassLoader(sha1(__FILE__), $loader);
// register the cached class loader
$cachedLoader->register();
// deactivate the original, non-cached loader if it was registered previously
$loader->unregister();