bjyoungblood / heroine
该包最新版本(dev-master)没有可用的许可证信息。
dev-master
2016-07-25 19:58 UTC
This package is not auto-updated.
Last update: 2024-09-12 17:58:14 UTC
README
Heroine 通过提供简单的、无依赖的服务定位器和存储库,来拯救您从依赖注入(DI)的恶梦中醒来。
有关服务定位器模式的更多信息,您可以阅读维基百科文章服务定位器模式,或者访问Martin Fowler的网站。
配置和使用
您可以根据自己的需要配置 Heroine 的方式和位置。您只需使用数组或 Heroine\Config
实例构建一个新的 Heroine\Heroine
对象。
以下是一个示例数组配置:
<?php $heroineConfig = array( 'instantiables' => array( 'MyClass' => 'MyClass', 'another_class' => 'Another\Class', ), 'callables' => array( 'MyCalledClass' => function(Heroine\Heroine $heroine) { $instance = new MyCalledClass; $instance->setMyClass($heroine->get('MyClass')); return $instance; }, 'another_called_class' => function(Heroine\Heroine $heroine) { $instance = new Another\Called\Class; $instance->setAnotherClass($heroine->get('another_class')); return $instance; }, ), 'factories' => array( 'MyFactoryProductClass' => 'MyFactoryClass', ), 'initializers' => array( function (Heroine\Heroine $heroine, $instance) { if ($instance instanceof Heroine\HeroineAwareInterface) { $instance->setHeroine($heroine); } }, function (Heroine\Heroine $heroine, $instance) { if ($instance instanceof InitializableInterface) { $instance->initalize(); } }, ), ); ?>
这里的前四个顶级数组键代表了 Heroine 提供的四种创建模式。
- 可实例化对象 - 这些是没有其他依赖但您希望由 Heroine 处理的类。这可能是一个模型实体原型的一个例子。
- 可调用对象 - 这些是简单的工厂,可以使用 Heroine(或其他资源)来创建类的实例。当您的类有几个简单的依赖关系,而这些依赖关系已经由 Heroine 管理时,这被推荐使用。
- 工厂 - 这是一个完整的工厂类,必须实现 Heroine\Factory\FactoryInterface。将调用
createService
方法来获取实例。这被推荐用于具有许多依赖关系或复杂配置的对象。 - 初始化器 - 初始化器是一系列在 Heroine 创建的每个对象上运行的函数,用于提供一些初始状态。例如,您可能有一个 HeroineAwareInterface,它提供了一个钩子,在对象创建后将其注入到对象中。