hongliang/alterload

自动加载的替代方案

v1.0.0 2018-06-01 05:36 UTC

This package is not auto-updated.

Last update: 2024-09-20 21:32:28 UTC


README

为什么选择Alterload

Alterload是autoload的替代加载器。

Alterload非常适合库开发者。当我们在开发PHP项目/应用程序时,使用composer来管理依赖项。有时我们需要在项目的一个依赖项上工作,但仍然需要在项目中调试/测试。想想看,这个库是项目的一部分。

在Alterload之前,我们有2种方法可以在项目中调试/测试库

  1. 提交库的新版本的所有更改,等待Packagist重新索引,并在调用项目中更新composer.lock并测试。
  2. 将“repository”添加到调用项目的composer.json中(你不应该忘记在提交时移除它,并在之后放回)

__ * 不讨论symlinking或直接在vendor目录中编辑文件 __

Alterload灵感来源于https://github.com/linkorb/autotune

它如何工作

使您的应用程序为Alterload做好准备需要3个简单的步骤

1. 在您的composer.json文件中包含Packagist上的hongliang/alterload

require-dev": {
   "hongliang/alterload": "~1.0"
}

2. 在您的应用中初始化Alterload

在您的应用程序中某个地方,您包含vendor/autoload.php。有时它在web/index.phpbin/console中。找到这个位置,并添加以下这些行

$loader = require_once __DIR__.'/../vendor/autoload.php';
if (class_exists('Alterload\Loader')) {
    \Alterload\Loader::alter($loader);
}

alter的调用包裹在class_exists块中可以确保只有在Alterload已安装在您的(开发)环境中时才会使用Alterload(从composer.json中的require-dev块安装)。在生产环境中,如果您使用--no-dev安装依赖项,则不会调用它

3. 在您的项目根目录中添加一个.alterload.ini文件。

psr-4:Monolog\Logger\ = /Users/me/git/monolog/monolog/src/Monolog
psr-0:Monolog\Logger\ = /Users/me/git/monolog/monolog/src/Monolog/Monolog/Monolog
;psr-4:Monolog\Logger\ = /this/is/commentted/out

理想情况下,您应该在.gitignore文件中添加.alterload.ini

完成

当您的应用程序进行类似以下操作时,它将加载库的“本地”版本,而不是您的vendor/目录中的版本。

$logger = new \Monolog\Logger('example');

因此,从现在开始,您不需要对主应用程序进行任何更改。所有内容都由您的本地.alterload.ini文件管理。

符号链接依赖项

有时我们还想在依赖库中使用其他资源(模板、js、图片等),而不仅仅是PHP类。在这种情况下,我们可以使用vendor/bin/alterload link命令将库(在vendor目录中)符号链接到本地库。

只需在.alterload.ini行前添加link:

link:psr-4:Monolog\Logger\ = /Users/me/git/monolog/monolog/src/Monolog

然后从您的应用程序目录运行命令

vendor/bin/alterload link

许可证

MIT(见LICENSE.md