jesseschalken / autoload-generator
为PHP项目生成基于类映射的include/autoload文件,支持函数和常量。
0.2.3
2016-12-09 01:47 UTC
Requires
- docopt/docopt: ^1.0
- jesseschalken/pure-json: ^1.2.0
- nikic/php-parser: ^1.4
This package is not auto-updated.
Last update: 2024-09-14 18:15:00 UTC
README
为PHP项目生成基于类映射的autoload加载器,支持函数和常量。
使用方法
-
包含composer包
php composer.phar require --dev jesseschalken/autoload-generator
-
运行
./vendor/bin/php-generate-autoload <outfile> [<files>...]
例如,如果你的项目所有源文件都在
src/
目录下,你可以这样做./vendor/bin/php-generate-autoload src/autoload.php
然后使用
src/autoload.php
作为项目的入口点。查看
./vendor/bin/php-generate-autoload --help
获取更多信息。 -
如果适用,更新
composer.json
以指向你的autoload加载器。例如"autoload": { "files": ["src/autoload.php"] }
工作原理
php-generate-autoload
使用nikic/PHP-Parser解析所有PHP文件,并创建一个从类名到文件路径的映射,用于在spl_autoload_register()
注册的autoload加载器中。包含全局函数或常量定义的任何文件都将直接包含在内。
例如,考虑一个包含三个文件的项目:src/Foo.php
、src/Bar.php
和src/lots of classes.php
包含类,src/functions.php
包含函数,src/constants.php
包含常量。
运行后
./vendor/bin/php-generate-autoload src/autoload.php
src/autoload.php
将包含类似的内容
<?php spl_autoload_register(function ($class) { static $map = array ( 'Project\\Foo' => 'Foo.php', 'Project\\Bar' => 'Bar.php', 'Project\\Class1' => 'lots of classes.php', 'Project\\Class2' => 'lots of classes.php', 'Project\\Class3' => 'lots of classes.php', ); if (isset($map[$class])) { require_once __DIR__ . "/{$map[$class]}"; } }, true, false); require_once __DIR__ . '/constants.php'; require_once __DIR__ . '/functions.php';