crodas / autoloader

最好的自动加载器

v0.1.19 2016-03-31 14:56 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