mtymek / class-dumper
创建包含多个类的单个文件,以加快应用程序引导速度。
0.4.0
2016-06-26 12:09 UTC
Requires
- php: ^5.5 || ^7.0
- zendframework/zend-code: ~2.4
- zfcampus/zf-console: ~1.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: 2.*
This package is auto-updated.
Last update: 2024-09-05 03:52:01 UTC
README
创建包含多个类的单个PHP文件,以加快应用程序引导速度。
使用方法
命令行脚本
首先,创建一个配置文件,列出您想要合并的所有文件。您无需担心类的顺序,也无需添加所需的接口或父类 - 它们将被自动添加到合并文件中。
配置文件是一个简单的PHP文件,返回类名数组
// config/classes-to-cache.php return [ // ZF2 classes Zend\Mvc\Application::class, Zend\Mvc\ApplicationInterface::class, Zend\EventManager\EventsCapableInterface::class, // custom classes Foo\Application::class, Foo\Listener\Auth::class ]
接下来,使用dump-classes.php
脚本生成缓存文件
php ./vendor/bin/dump-classes.php config/classes-to-cache.php data/cache/classes.php.cache
当类缓存生成后,您可以在应用程序入口点中包含它
// index.php include 'vendor/autoload.php'; include 'data/cache/classes.php.cache';
您可以通过将composer
的安装后和更新后钩子添加到composer.json
文件中来自动化生成
{ "scripts": { "post-install-cmd": [ "php ./vendor/bin/dump-classes.php config/classes-to-cache.php data/cache/classes.php.cache-raw", ], "post-update-cmd": [ "php ./vendor/bin/dump-classes.php config/classes-to-cache.php data/cache/classes.php.cache-raw", ] } }
PHP
或者,您可以在PHP脚本中生成缓存的类文件
$dumper = new ClassDumper(); $cache = $dumper->dump([ Foo::class, Bar::class, ]); file_put_contents('data/cache/class_cache', "<?php\n" . $cache);
压缩合并文件
ClassDumper可以通过删除所有空白和注释来减小输出文件的大小。
您可以通过添加--strip
开关从命令行触发
php ./vendor/bin/dump-classes.php config/classes-to-cache.php classes.php.cache --strip
在PHP中使用
$cache = $dumper->dump([ /* ... */ ], true);
生成配置文件
您可以根据应用程序当前包含的文件轻松生成配置文件。为此,请在您的应用程序引导后添加以下行(理想情况下在路由开始之前)
$configGenerator = new \ClassDumper\ConfigGenerator; $configGenerator->dumpIncludedClasses('config.php');
这会将所有包含的类的列表保存到config.php
文件中。您可能需要在将其用于应用程序之前手动编辑配置文件 - 请参阅下面的“限制”部分。创建配置文件后,请删除上述行。
限制
并非所有类都可以使用Class Dumper
进行缓存。
- 类转储将结束在合并类不同的目录中。使用像
__DIR__
或__FILE__
这样的常量的类可能无法正常工作。 - 当使用"--strip"选项时,所有注释(包括注释)将被删除。这将阻止注释解析器在缓存类上工作。
待办事项
- 当类不存在时抛出异常
- 如果类包含
__DIR__
或__FILE__
常量则发出警告 - 输出/日志统计信息
- 修复
__DIR__
常量