感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
要找到一个特定的类的文件,代价可能很高。幸运的是,ClassLoader组件内置了两个类,用于缓存“从类到类所在的文件”之映射关系。 ApcClassLoader
和 XcacheClassLoader
都可以打包儿出来一个实现了 findFile()
方法的类,用于找到类的文件。
ApcClassLoader
和 XcacheClassLoader
都可以用于缓存Composer的 autoloader。
ApcClassLoader
对一个现有的类加载器打包,并使用 APC 来对载器的 findFile()
方法调用,进行缓存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | require_once '/path/to/src/Symfony/Component/ClassLoader/ApcClassLoader.php';
// instance of a class that implements a findFile() method, like the ClassLoader
// 一个实现了findFile()方法的类的实例,类似于ClassLoader
$loader = ...;
// sha1(__FILE__) generates an APC namespace prefix
// sha1(__FILE__) 生成一个APC命名空间前缀
$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已经注册过,对其反激活
$loader->unregister(); |
XcacheClassLoader
使用 XCache 来缓存类加载器。注册它是很简单的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | require_once '/path/to/src/Symfony/Component/ClassLoader/XcacheClassLoader.php';
// instance of a class that implements a findFile() method, like the ClassLoader
// 一个实现了findFile()方法的类的实例,类似于ClassLoader
$loader = ...;
// sha1(__FILE__) generates an XCache namespace prefix
// sha1(__FILE__) 生成一个XCache命名空间前缀
$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已经注册过,对其反激活
$loader->unregister(); |
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。