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

如何在我的类中使用PHP的__get()和__set()来定义字段?

发布时间:2020-12-13 21:59:49 所属栏目:PHP教程 来源:网络整理
导读:我已经很好地阅读了 PHP specs on overloading,并且大多数示例似乎只是为了允许定义自定义字段(类似于stdClass). 但是我班上定义的私人领域呢?如何检索/分配这些?我可以切换可能的值并对某些值进行操作: class A{ private $name; private $age; public fu
我已经很好地阅读了 PHP specs on overloading,并且大多数示例似乎只是为了允许定义自定义字段(类似于stdClass).

但是我班上定义的私人领域呢?如何检索/分配这些?我可以切换可能的值并对某些值进行操作:

class A
{
    private $name;
    private $age;

    public function __get( $var )
    {
        switch ( $var )
        {
            case 'name':
                return $this->name;
                break;
            case 'age':
                return $this->age+10; // just to do something different ;)
                break;
            default:
                break;
        }
    }
}

这是最好的方法,还是有另一种普遍接受的最佳做法? (我不知道是否可以在类中循环类变量,但是在大多数情况下这是不合适的,因为你不想返回所有内容.)

解决方法

这将有效地使它们公开,并且通常只使用公共属性就可以获得任何收益(但是你需要支付性能损失并且必须编写更多代码,冒险错误).

只有当您拥有使用公共属性的现有代码并且突然需要getter / setter时才使用它(如您的年龄示例).

如果您需要在读取/写入属性时执行某些代码(例如,将其设置为只读或从数据库中进行延迟读取),则应使用普通的getter / setter(getAge()/ setAge()).

(编辑:李大同)

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

    推荐文章
      热点阅读