好的我知道我可以擁有私有屬性來防止在類之外使用屬性,但是是否也可以使該屬性在類之外不可見?PHP隱形類屬性
我的意思是說,如果我做了print_r()
或foreach()
這個類,那麼是否有可能讓這個屬性出現?
好的我知道我可以擁有私有屬性來防止在類之外使用屬性,但是是否也可以使該屬性在類之外不可見?PHP隱形類屬性
我的意思是說,如果我做了print_r()
或foreach()
這個類,那麼是否有可能讓這個屬性出現?
global
在所有的方法的一些模糊的變量名,並使用它們就像性質
我再也不想看到它做了,我也不知道你爲什麼要由開發商來隱藏檢查屬性,但我假設它會工作。
您不能隱藏調試函數的屬性,如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- $>酒吧工作,就好像它是一個屬性,即使實際上不存在此類屬性當你做var_dump等。
我記得前面有一個關於這個的討論,有一些PHP版本沒有顯示這些屬性。可悲的是我現在找不到它。你有什麼特別的理由你不想讓他們顯示?反射仍然可以用來看到它們。 – 2010-12-09 07:23:01
這裏有兩個錯誤報告,http://bugs.php.net/bug.php?id=39118&edit=2和http://bugs.php.net/bug.php?id=35822&edit=1。正如你在迴應中看到的那樣,這不是一個錯誤,而是一個特徵。 – 2010-12-09 07:25:48