jankal/checked-instance

能够从工厂创建实例,并且只返回有效的实例

v1.0.0 2017-03-07 17:00 UTC

This package is auto-updated.

Last update: 2024-09-18 02:52:09 UTC


README

Coverage Status Build Status Scrutinizer Code Quality Latest Stable Version License Total Downloads Latest Unstable Version composer.lock

无需烦恼设置许多构造函数参数即可创建实例。

CheckedInstance\Factory 将创建实现 CheckedInstance\InstanceInterface 的给定类的实例。

工厂

创建一个 TestClass 的新实例

<?php
$factory = CheckedInstance\Factory::for(TestClass::class);
$object = $factory->make();

或者

<?php
$factory = new CheckedInstance\Factory();
$factory->as(TestClass::class);
$object = $factory->make();

或者

<?php
$factory = new CheckedInstance\Factory();
$object = $factory->make(TestClass::class);

使用参数创建 TestClass 的新实例

<?php
$factory = new CheckedInstance\Factory();
$factory->with('authKey', '84746afg7u789h2');
$object = $factory->make();

其他选项根据上面的示例!

\Psr\Container\ContainerInterface 注入参数

<?php
/** @var $c \Psr\Container\ContainerInterface */
CheckedInstance\Factory::container($c);
$factory = new CheckedInstance\Factory();
$object = $factory->make();

也可以使用一个前缀,它将添加到实际参数之前

<?php
/** @var $c \Psr\Container\ContainerInterface */
CheckedInstance\Factory::container($c);
$factory = CheckedInstance\Factory::prefix('test.');
$object = $factory->make();

实例

一个可以被 CheckedInstance\Factory 实例化的类需要实现 CheckedInstance\InstanceInterface。但它也可以继承自 CheckedInstance\Instance

<?php
class TestInstance extends CheckedInstance\Instance {
    protected $required = [
        'authKey'
    ];
}

这样,实例只有在设置了 authKey,如 CheckedInstance\Factory->with('authKey', <-value->) 时才会成功创建。