Я работаю над личным проектом на PHP и, как и большинство классов, которые мне нужны, мне нужны функции получения / установки.
У меня была мысль и я провел некоторое исследование, но не смог найти ответ. Вместо того, чтобы определять две функции — одну get и одну set — почему они не могут быть обработаны одной функцией?
function myVar ($newVar = NULL) {
if(isset($newVar)) {
$this->var = $newVar;
} else {
return $this->var;
}
}
Есть ли какие-либо недостатки в этом, что я, возможно, не вижу?
Вы могли бы использовать __get
а также __set
волшебная пыль Но есть и обратная сторона: вы потеряете автозаполнение IDE, генерацию PHPDoc, наследование. Это помогает не писать код, но он не чистый, у вас нет логики public / protect / private. То же самое для вашего метода.
class MyClass {
private $one;
private $two;
public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}
public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
return $this;
}
}
Других решений пока нет …