lukaszmakuch / property-setter
设置已存在对象的属性。
v0.2
2016-04-19 18:16 UTC
Requires (Dev)
- phpunit/phpunit: 5.3.*
This package is not auto-updated.
Last update: 2024-09-20 19:19:50 UTC
README
PropertySetter
设置已存在对象的属性。
用法
不同的设置器
PropertySetter
描述如何使用任何属性设置器。
use lukaszmakuch\PropertySetter\PropertySetter; /* @var $propetySetter PropertySetter */ $propetySetter->setPropertiesOf($someObject);
SimplePropertySetter
使用某种属性设置策略,将来自值源的值注入到由目标指定器描述的对象中。
use lukaszmakuch\PropertySetter\SimplePropertySetter; use lukaszmakuch\PropertySetter\SettingStrategy\CallSetterMethod; use lukaszmakuch\PropertySetter\TargetSpecifier\PickByClass; use lukaszmakuch\PropertySetter\ValueSource\UseDirectly; $setter = new SimplePropertySetter( new PickByClass(SomeClass::class), new CallSetterMethod("setParam"), new UseDirectly("param value") );
SilentPropertySetter
这是一个装饰器,可以防止装饰过的设置器在某个对象不受支持时抛出UnsupportedTarget异常。
use lukaszmakuch\PropertySetter\SilentPropertySetter; use lukaszmakuch\PropertySetter\PropertySetter; /* @var $actualSetter PropertySetter */ $silentSetter = new SilentPropertySetter($actualSetter);
SimpleChainOfPropertySetters
它尝试使用所有设置器设置对象的属性。它不会阻止任何异常。
use lukaszmakuch\PropertySetter\SimpleChainOfPropertySetters; use lukaszmakuch\PropertySetter\PropertySetter; /* @var $firstSetter PropertySetter */ /* @var $anotherSetter PropertySetter */ $chain = (new SimpleChainOfPropertySetters()) ->add($firstSetter) ->add($anotherSetter);
SilentChainOfPropertySetters
这是一个装饰器,在某个设置器不支持某些类型的对象时忽略这种情况。它防止抛出UnsupportedTarget异常。当其中一个设置器抛出异常时,它将继续尝试使用其他设置器。
use lukaszmakuch\PropertySetter\SilentChainOfPropertySetters; use lukaszmakuch\PropertySetter\ChainOfPropertySetters; /* @var $actualChain ChainOfPropertySetters */ $silentChain = new SilentChainOfPropertySetters($actualChain);
设置策略
CallSetterMethod
调用设置器以设置属性。
use lukaszmakuch\PropertySetter\SettingStrategy\CallSetterMethod; $strategy = new CallSetterMethod("setParam"); //will call setParam
CallOnlyMethodAsSetter
调用设置器以设置属性。
use lukaszmakuch\PropertySetter\SettingStrategy\CallOnlyMethodAsSetter; interface ObjectThatHasOnlyOnePublicMethod { public function setParam($newValue); } $strategy = new CallOnlyMethodAsSetter(ObjectThatHasOnlyOnePublicMethod::class); //will call setParam
目标指定器
PickByClass
通过类选择目标。
use lukaszmakuch\PropertySetter\TargetSpecifier\PickByClass; $specifier = new PickByClass(\DateTime::class); //will support \DateTime
值源
UseDirectly
简单地保留一些值,在返回之前不对其进行修改。
use lukaszmakuch\PropertySetter\ValueSource\UseDirectly; $valueSource = new UseDirectly(123); //will return 123
异常
UnableToSetProperty
\lukaszmakuch\PropertySetter\Exception\UnableToSetProperty
它是任何可能由setPropertiesOf方法抛出的异常的父类。当设置器方法抛出异常时,它被封装在这个异常中(并通过调用getPrevious方法变得可用)。
UnableToGetValue
\lukaszmakuch\PropertySetter\Exception\UnableToGetValue
当无法获取值(来自值源)时抛出。它继承自UnableToSetProperty异常。
UnableToGetValue
\lukaszmakuch\PropertySetter\Exception\UnsupportedTarget
当尝试设置不支持的对象的属性时抛出。它继承自UnableToSetProperty异常。
安装
使用composer获取最新版本
$ composer require lukaszmakuch/property-setter