我正在尝试为 php 对象实现一些自动 getter 和 setter。
我的目标是自动为每个属性提供方法getProperty()
and setProperty(value)
,这样,如果没有为属性实现该方法,脚本将简单地设置或获取该值。
举个例子,让自己清楚:
class Foo {
public $Bar;
}
$A = new A();
$A->setBar("bar");
$A->getBar(); // -> output "bar"
or
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
and setXy
任意属性的函数,然后使用魔法__call http://php.net/__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];
}
}
通过添加类型映射或任何东西,这将是一次做一些有用的事情的好机会。否则就回避getter 和 setter https://web.archive.org/web/20120411001400/http://berryllium.nl/2011/02/getters-and-setters-evil-or-necessary-evil/总的来说可能是可取的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)