php 自动化 setter 和 getter
我正在尝试为 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"
关于如何实现这一点的任何想法/提示?
I'm trying to implement some automated getter and setter for php objects.
My target is to automatically have for each properties the methods getProperty()
and setProperty(value)
, that way if the method is not implemented for a property the script will simply set or get the value.
An example, to make myself clear:
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"
Any idea/hints on how to accomplish this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您想为任意属性模拟
getXy
和setXy
函数,请使用神奇的__call
包装器:这将是一个很好的机会,通过添加类型映射或任何东西来一次性做一些有用的事情。否则避免 getter 和 setter 一起使用可能是明智的。
If you want to simulate the
getXy
andsetXy
functions for arbitrary properties, then use the magic__call
wrapper:This would be a good opportunity to do something useful for once, by adding a typemap or anything. Otherwise eschewing getters and setters alltogether might be advisable.
阅读
php的神奇函数
,您可以使用__get和__set
函数阅读此内容
read the
magic functions of php
and your need you can use__get and __set
functionsread this