wscore/dicontainer

此包最新版本(0.1.0)没有提供许可证信息。

带有自动装配功能的简单DI容器。

0.1.0 2013-08-31 02:28 UTC

This package is auto-updated.

Last update: 2024-08-28 17:11:00 UTC


README

简单的依赖注入容器。

用法

###创建实例

使用实例脚本

$container = include( 'WScore.DiContainer/scripts/instance.php' );

###设置和获取值。

设置和获取一个值。

$container->set( 'some-id', 'a value' );
$value = $container->get( 'some-id' ); // gets a string: "a value".

设置服务对象。

$container->set( 'service-this', '\name\space\className' );
$object = $container->get( 'service-this' ); // it's \name\space\className class.

或者,简单地指定一个类名以获取一个对象。

$object = $container->get( '\name\space\className2' );

###获取另一个类

为给定类设置另一个类。

$container->set( '\some\class', '\name\space\className' );
$object = $container->get( '\some\class' ); // it's \name\space\className class.

自动装配/发现

支持使用phpdocs中的注解进行简单的自动装配或自动发现依赖项。支持的标签有:@Inject@param@var

也支持 @Singleton 注解。

示例PHP类代码

/**
 * @Singleton
 */
class Sample {
    /**
     * @Inject
     * @var /class/class
     */
    private $property;

    /**
     * @Inject
     * @param /some/class1 $var
     * @param /some/class2 $var2
     */
    function __construct( $var, $var2 ) {}

    /**
     * @Inject
     * @param /some/class1 $var3
     */
    function setVar3( $var3 ) {}
}

覆盖DI选项

容器可以覆盖任何注入类型的依赖项:构造函数、设置器和属性注入。在get中指定选项,

$container->option( 'Some\Class' )
    ->setConstructor( 'var', 'another\class' )
    ->setSetter( 'setVar3', 'setter\class', )
    ->setProperty( 'property', 'property\class' );
$object = $container->get( 'Some\Class );