我正在开发一个包含一些大型DTO对象的项目。所以我尝试使用构建器,但现在他们的构建器也变得太大了。
class foo
{
private $bar1;
private $bar2;
private $bar3;
private $bar4;
private $bar5;
private $bar6;
private $bar7;
private $bar8;
...
public function __construct(fooBuilder $builder)
{
$this->bar1 = $builder->getBar1()
}
...
}
class fooBuilder
{
private $bar1;
private $bar2;
private $bar3;
private $bar4;
private $bar5;
private $bar6;
private $bar7;
private $bar8;
...
/**
* @return mixed
*/
public function getBar1()
{
return $this->bar1;
}
/**
* @param mixed $bar1
* @return fooBuilder
*/
public function setBar1($bar1)
{
$this->bar1 = $bar1;
return $this;
}
...
}
所以我的问题是如何减少构建器中的getter和setter的数量,或者是否有更好的方法来构建我的大型DTO。
我有另一个问题,如何为此编写有意义的单元测试?
答案 0 :(得分:0)
为了减少getter或setter的数量,你可以使用魔术方法:
对设置者使用__set()
,为设置者使用__get()
。
以下是一个例子:
public function __set($property,$value) {
$this->$property = $value;
}
public function __get($property) {
return $this->$property;
}
如果您想获取属性数据,只需使用
调用即可$object->attribute;
您可以使用某些测试来验证您的类是否具有此属性,然后使用以下命令进行设置:
bool property_exists (mixed $class, string $property)
您可以在此处查看文档: http://php.net/property-exists