Skip to content

Cache a Class Loader

Warning: You are browsing the documentation for Symfony 2.x, which is no longer maintained.

Read the updated version of this page for Symfony 7.1 (the current stable version).

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

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);

// registers the cached class loader
$cachedLoader->register();

// deactivates the original, non-cached loader if it was registered previously
$loader->unregister();

XcacheClassLoader

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);

// registers the cached class loader
$cachedLoader->register();

// deactivates the original, non-cached loader if it was registered previously
$loader->unregister();
This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.
TOC
    Version