PHP隐形类属性

时间:2010-12-09 06:53:50

标签: php class properties

好的我知道我可以拥有私有属性来阻止在类之外使用属性,但是是否也可以在类之外使该属性不可见?

我的意思是,如果我选择了print_r()foreach()这个类,是否可以设置一个方法以便该属性不显示?

2 个答案:

答案 0 :(得分:0)

global所有方法中的一些模糊变量名称,并将它们用作属性

我永远不想看到它完成,也不知道你为什么要隐藏开发人员检查的属性,但我认为它可以工作。

答案 1 :(得分:0)

您无法隐藏调试功能的属性,例如print_r / var_dump。但是,您可以使用__get/__set模拟属性,如下所示:

 <?php
 class MyClass {
   public function __get($name) {
      if($name == "bar") {
       /* take bar from somewhere */
      }
   }
   public function __set($name, $value) {
      if($name == "bar") {
       /* store $value somewhere */
      }
   }
 }

 $foo = new MyClass();
 $foo->bar = 1;

这样,您可以使用$ foo-&gt; bar,就像它是属性一样,即使实际上在执行var_dump等时没有这样的属性。