Я работаю над проектом с некоторыми большими объектами 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;
}
...
}
Итак, мой вопрос здесь заключается в том, как мне уменьшить количество получателей и установщиков в моем сборщике или есть ли лучший способ создать мой большой DTO.
Другой вопрос, который у меня есть, как я могу написать содержательный модульный тест для этого?
Чтобы уменьшить количество получателей или установщиков, вы можете использовать магические методы:
использование __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
Других решений пока нет …