Я пытаюсь реализовать некоторые автоматические getter и setter для php-объектов.
Моя цель состоит в том, чтобы автоматически использовать для каждого свойства методы getProperty()
и setProperty(value)
, таким образом, если метод не реализован для свойства, скрипт просто установит или получит значение.
Например, чтобы я убедился:
class Foo { public $Bar; } $A = new A(); $A->setBar("bar"); $A->getBar(); // -> output "bar"
или
class Foo { public $Bar; public function setBar($bar) { $Bar = $bar; } public function getBar($bar) { return 'the value is: ' . $bar; } } $A = new A(); $A->setBar("bar"); $A->getBar(); // -> output "the value is: bar"
Любая идея / подсказки о том, как это сделать?
Если вы хотите имитировать функции getXy
и setXy
для произвольных свойств, используйте магическую оболочку __call
:
function __call($method, $params) { $var = lcfirst(substr($method, 3)); if (strncasecmp($method, "get", 3) === 0) { return $this->$var; } if (strncasecmp($method, "set", 3) === 0) { $this->$var = $params[0]; } }
Это была бы хорошая возможность сделать что-то полезное за один раз, добавив типовую карту или что-нибудь еще. В противном случае может быть целесообразным избегать геттеров и сеттеров .
прочитайте magic functions of php
и ваши потребности, вы можете использовать функции __get and __set
прочитай это