PHP不可见类属性

PHP不可见类属性,php,class,properties,Php,Class,Properties,好的,我知道我可以拥有私有属性,这些属性可以防止在类之外使用某个属性,但是是否也可以使该属性在类之外不可见 我的意思是,如果我对类执行print\r()或foreach(),是否有可能使属性不显示?global在所有方法中使用一些模糊的变量名,并将它们用作属性 我永远不想看到它完成,也不知道为什么要隐藏属性以防开发人员检查,但我认为它会起作用。您不能从调试函数(如print\r/var\u dump)中隐藏属性。但是,您可以使用\uuuuu get/\uuuu set模拟属性,如下所示: &l

好的,我知道我可以拥有私有属性,这些属性可以防止在类之外使用某个属性,但是是否也可以使该属性在类之外不可见


我的意思是,如果我对类执行
print\r()
foreach()
,是否有可能使属性不显示?

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


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

您不能从调试函数(如print\r/var\u dump)中隐藏属性。但是,您可以使用
\uuuuu get/\uuuu 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;

我记得不久前讨论过这个问题,有些PHP版本没有显示这些属性。很遗憾,我现在找不到它。有什么特别的原因不想让它们显示出来吗?反射仍然可以用来查看它们。正如您在响应中看到的,这不是一个bug,而是一个特性。我正在为我的框架为php创建一个活动记录类,每个记录都是自己的一个类,数据作为属性。我已经在每个记录中实现了一个save方法,但要使其工作,需要使用一个属性,其中包含数据库类。我不想在循环遍历记录时编写额外的代码来删除该属性,所以我希望有一种方法可以隐藏该属性。和你一样,我也认为使用全球定位系统是不明智的,但我可能不得不这样做。