jankal / checked-instance
能够从工厂创建实例,并且只返回有效的实例
v1.0.0
2017-03-07 17:00 UTC
Requires (Dev)
- phpunit/phpunit: 6.0.*
This package is auto-updated.
Last update: 2024-09-18 02:52:09 UTC
README
无需烦恼设置许多构造函数参数即可创建实例。
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->) 时才会成功创建。