crodas / autoloader
最好的自动加载器
v0.1.19
2016-03-31 14:56 UTC
Requires
- php: >=5.3.0
- crodas/class-info: ^0.2
- crodas/cli: ^0.1
- crodas/file-util: >=0.2
- symfony/console: ^2.1 | ^3.0
- symfony/finder: ^2.1 | ^3.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-18 01:31:26 UTC
README
PHP的自动加载器生成器。
为什么?
自动加载器很酷,但每个项目都有自己的自动加载器。最终,你的项目会有比正确代码更多的自动加载器。
我是一个务实的开发者,我不认为我们应该在我们的生产环境中,文件几乎不变,而执行次数众多的情况下,反复执行自动加载器是不公平的。
所以作为一个概念验证,我开始这个项目,旨在生成一个高效的自动加载器。生成的自动加载器包含类和文件的数组。作为额外的礼物,生成的代码将包含通用的PSR-0自动加载器(借自@alganet)。
现在的自动加载器还会生成所有类依赖项(父类、接口),以减少对自动加载器的调用次数。
一些功能
- 运行时不会执行类到路径的转换。
Autoloader
在指定目录中创建文件和类的映射。 - 当加载一个类时,会加载所有其依赖项(父类、接口)。目标是减少对自动加载器的调用次数。
- 始终生成使用绝对路径的代码(如果设置了
--library
,则使用__DIR__
) - 包含(除了
--library
之外)通用的PSR-0自动加载器。
如何工作
它被设计为可以集成到你的部署脚本中。
require "lib/Autoloader/loader.php"; $generator = new \Autoloader\Generator("vendors/"); $generator->generate("autoloader.php");
如果你了解自己在做什么,你可以使用Finder
的一个实例。
require "lib/Autoloader/loader.php"; $finder = \Symfony\Component\Finder\Finder(); $finder->files()->name('*.php')->in("vendors/"); $generator = new \Autoloader\Generator($finder); $generator->generate("autoloader.php");
如何安装(针对开发者)
为了安装,你应该使用composer
。
php composer.phar install
与composer一起使用
Composer是一个非常棒的依赖管理器,然而我认为在自动加载器生成方面还有很多优化空间。如果你希望有一个更好的自动加载器,它可以扫描你的所有依赖项和项目(无论它们是否已配置psr-0
)。它还会将你的本地类添加到自动加载器中。
{ "require": { "crodas/autoloader":"*" }, "minimum-stability": "dev", "scripts": { "post-autoload-dump": "Autoloader\\Composer::generate" } }
通过覆盖post-autoload-dump
,它会替换生成的自动加载器文件,它将自动调用,但是如果你想重新运行它(例如,当你向项目中添加一个新类并希望它被自动加载时),只需运行 composer dump-autoload
。