PHP невидимые свойства класса - PullRequest
0 голосов
/ 09 декабря 2010

Хорошо, я знаю, что у меня могут быть частные свойства, которые не позволяют использовать свойство за пределами класса, но возможно ли сделать это свойство невидимым за пределами класса?

Что я имею в виду, так этоможно сделать так, чтобы свойство даже не показывалось, если я делаю print_r() или foreach() класса?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

Вы не можете скрыть свойства от функций отладки, таких как 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-> bar, как если бы это было свойство, хотя на самом деле такого свойства не существует при выполнении var_dump и т. Д.

0 голосов
/ 09 декабря 2010

global некоторые непонятные имена переменных во всех ваших методах и используют их как свойства

Я бы никогда не хотел, чтобы это было сделано, и не знаю, почему вы хотите скрыть свойства от проверки разработчиком., но я полагаю, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...