class A
{
protected $user_id;
public setUser($id){
$this->user_id = $id;
}
}
class B extends A{
private $name;
private $price;
public function init(array $data){
if(isset($data['price'])){
$this->price = $data['price'];
}
//.....
}
}
Контроллер вызывает только наследника (один класс и один экшн). В данном примере это класс B.
У каждого наследника, есть свои свойства. При этом у всех есть user_id, которое я и вынес в родителя. У родителя есть ещё несколько методов, которые также должны быть доступны в любом наследнике, поэтому они тоже в классе A. (их не стал добавлять в пример)
Вопрос. Как правильно инициализировать свойства Наследников, если я не знаю, какие свойства у них будут в будущем?
Иными словами переписывать класс A потом нельзя. А контроллер может только один раз вызвать action.
Я решил это вот так
$obj = new B;
$obj->setUser(1);
if(!empty($_POST)){
$obj->init($_POST);
}
$obj->method();
Правильно ли я реализовал добавление данных в наследника или есть более простые решения?