我正在尝试为PHP对象实现一些自动getter和setter.
我的目标是为每个属性自动拥有方法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函数,请使用magic
__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]; } }
通过添加类型映射或任何东西,这将是一次做有用的事情的好机会.否则完全避开getters and setters可能是明智之举.