Правильно ли использовать __call так? Здравствуйте. На сколько правильно использовать __call в таком случае (класс ниже)? Будет несколько методов set и не хотелось бы каждый раз $this возвращать, когда это можно сделать всего 1 разClass Aclass A { protected $data; public function __call($name, $arguments) { if ( method_exists($this, $name) ) { call_user_func_array([$this, $name], $arguments); } return $this; }
public function get() { return $this->data; } protected function setPreset() { // тут код манипуляции с $data, без return } } $A = new A(); $data = $A->setPreset() ->get();
Да, использование метода call в данном случае вполне уместно. Он позволяет избежать повторения кода при вызове нескольких методов set и возвращении $this после каждого из них. В данном случае, если метод setPreset() не существует в классе A, то произойдет вызов метода call, который проверит наличие метода setPreset() и выполнит его, передавая ему аргументы, если они есть. Таким образом, вы сможете вызывать методы set без необходимости каждый раз возвращать $this.
Да, использование метода call в данном случае вполне уместно. Он позволяет избежать повторения кода при вызове нескольких методов set и возвращении $this после каждого из них. В данном случае, если метод setPreset() не существует в классе A, то произойдет вызов метода call, который проверит наличие метода setPreset() и выполнит его, передавая ему аргументы, если они есть. Таким образом, вы сможете вызывать методы set без необходимости каждый раз возвращать $this.