Грубо говоря есть два класса:
первый
class A {
public $prop1;
public $prop2;
}
Второй:
class B {
public $object; // Объект класса A
public function run(){
return $this->object->prop1 + $this->object->prop2;
}
}
нужно сделать что бы свойство object класса B могло задаваться либо как ОБЪЕКТ либо как МАССИВ с конфигурацией объект, т.е., так:
$b = new B();
$b->object = new A(); // задаем в виде объекта
$b->object = [ // задаем в виде массива
'prop1' => 1,
'prop2' => 2
]
собственно вопрос - насколько корректно будет сделать сеттер в классе B для свойства object и в нем проверять - если пришел объект присваиваем его свойству, если пришел массив с конфигурацией - создаем объект самостоятельно. Т.е. так:
class B {
private $_object;
public function setObject($value) {
// здесь проверяем пришел объект и массив. Если пришел объект
// передаем его в переменную $_object, если пришел массив -
// самостоятельно создаем объект и передаем в свойство $_object
}
}