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.
注解
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:
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:
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();