sin square/composer-overload

使用 composer 覆盖类的一个简单工具

v0.1.1 2018-09-27 09:43 UTC

This package is not auto-updated.

Last update: 2024-09-29 06:20:13 UTC


README

这是一个用于“覆盖”类的简单工具。

一个简单的例子

假设你有以下代码

use Random\Namespace\OriginalClass;

...

$class = new OriginalClass();

在这种情况下,composer 会搜索文件,并加载(包含)它。但可能存在你想加载一个占位符类而不是原始类的情况,以便你的测试运行,例如。

为了做到这一点,你必须使用 ComposerOverload 自动加载器。替换原始的自动加载器。

//original autoloader
$loader = require __DIR__.'/vendor/autoload.php';

//ComposerAutoloader autoloader
require __DIR__.'/vendor/autoload.php';
require_once __DIR__.'/vendor/sinsquare/composer-overload/autoload_real.php';
$loader = ComposerOverLoaderInit::getLoader();

然后你可以添加你想要覆盖的类

//original autoloader
$loader->addOverloadedClass('Random\Namespace\OriginalClass', __DIR__.'/overloaded/OverloadedClass.php');

要运行测试,你必须单独运行两个测试

  • vendor/bin/phpunit tests/OriginalTest.php
  • vendor/bin/phpunit tests/OverloadTest.php