2011-12-09 69 views
4

如何檢測類屬性是私有的還是受保護的而不是使用外部庫(僅限純PHP)?我怎樣才能檢查我是否可以從課外設置房產,或者我不能?如何檢測類屬性是私有的還是受保護的

+1

的可能重複[檢測,如果一個對象的屬性是PHP私人](HTTP://計算器。 com/questions/2821927/detect-if-an-object-property-is-private-in-php) – mario

+1

看到這個職位的隊友: http://stackoverflow.com/questions/2821927/detect-if-an-object-property-is-private-in-php –

+1

你爲什麼要這麼做? – middus

回答

0

用途:

print_r($object_or_class_name);

應該畫出來給你,你可以或不可以訪問的屬性..

例如:

class tempclass { 
    private $priv1 = 1; 
    protected $prot1 = 2; 
    public $pub1 = 3; 

} 
$tmp = new tempclass(); 
print_r($tmp); 
exit; 

只是爲了說明我有一個私人財產,一個受保護財產和一個公共財產。然後我們看到print_r($tmp);的輸出:

tempclass Object 
(
    [priv1:tempclass:private] => 1 
    [prot1:protected] => 2 
    [pub1] => 3 
) 

或者我誤解了你的帖子?哈哈

+0

我認爲OP希望能夠以編程方式檢測某個屬性是私有的還是公共的。如果他只是想知道他可以打開文件。 –

+0

哦,我的壞。一旦他接受指向反思的答案,我會刪除我的帖子以避免混淆其他人:D – Nonym

+1

不需要。僅僅因爲它不是最有用的答案,並不能使它完全無用。其他人可能會對其進行谷歌搜索,實際上只需要print_r可視化的問題。 – mario

7

使用Reflection.

<?php 
    class Test { 
     private $foo; 
     public $bar; 
    } 

    $reflector = new ReflectionClass(get_class(new Test())); 

    $prop = $reflector->getProperty('foo'); 
    var_dump($prop->isPrivate()); 

    $prop = $reflector->getProperty('bar'); 
    var_dump($prop->isPrivate()); 
?> 
相關問題