加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php自动setter和getter

发布时间:2020-12-13 13:43:26 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试为php对象实现一些自动getter和setter. 我的目标是为每个属性自动拥有方法getProperty()和setProperty(value),这样如果没有为脚本将设置或获取值的属性实现该方法. 一个例子,让自己清楚: class Foo { public $Bar;}$A = new A();$A-setBar("bar")
我正在尝试为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可能是明智之举.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读