php面向对象编程中__get,__set 与数据的封装

许多资料上说,一个类中的私有属性不能从类的外部访问,但如果类定义时定义了__get和__set方法,就可以像访问公共属性那样访问私有属性,这两个方法会自动被调用,由于这两... 许多资料上说,一个类中的私有属性不能从类的外部访问,但如果类定义时定义了__get和__set方法,就可以像访问公共属性那样访问私有属性,这两个方法会自动被调用,由于这两个方法通过属性名来读写私有属性,那么我的疑问是,这样一来是不是所有的私有属性都"暴露"出来了?因为我只要把私有属性的名字传递过来就可以了,但实际应用中很有可能我一部分私有属性可以通过外部读写,但还有一部分我是只让外部读取但不能修改的,甚至有的私有属性在类的外部即不能读取也不能修改的(如只缓存当前类实例的操作状态等,这些应该对外部完全透明吧?),这种情况如何是好呢? 展开
 我来答
匿名用户
2015-08-22
展开全部
在 __get 方法里面判断,如果是不能读取的就立刻报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-06-27
展开全部
function __get( $name ) {
  $Key = array('a', 'b', 'c', 'd');
  if ( !in_array( $name, $Key ) ) {
    echo '该属性不允许读取';
  }   else {
      return $this -> $name;
  }  
  
}

思路参考!

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式