2011-09-07 82 views
-1

我想檢查一個類中的局部變量是公有還是私有的。 的原因是爲了創建這樣一個功能:檢查變量是否公開php

function ToArray() { 
    $arr = array(); 
    foreach($this as $key => $val) { 
    $arr[$key] = $val; 
    } 
    return $arr; 
} 

這個功能也返回私人領域,我不希望出現這種情況。我怎樣才能在這裏獲得公共變量?

+1

你不能這樣做'的foreach($這個...)' – Neal

+1

是的,我可以,我也是。對象上的Foreach循環遍歷對象中的屬性。只需自己嘗試一下。 Foreach on $ this也會返回私有和受保護的屬性。 –

+0

它是在PHP 5之後。 –

回答

3

the PHP documentation

$foo = new Foo(); 

$reflect = new ReflectionClass($foo); 
$props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC); 

foreach ($props as $prop) { 
    print $prop->getName() . "\n"; 
} 

var_dump($props); 
+0

$ key = $ prop-> getName(); $ value = $ this - > $ key; 謝謝。 –

+0

當您從其他來源複製文本時,**必須鏈接回原始來源,否則它看起來像剽竊。 – 2015-10-12 15:19:46

0

確保遵循一些命名約定您的私有變量(如我在前面加上_他們)

然後就返回那些確實在其關鍵的開始_變量。

+0

該語言中有關鍵字,因此我們不需要這樣的約定。它僅僅是[匈牙利語](http://en.wikipedia.org/wiki/Hungarian_notation)的訪問而不是類型(並且人們普遍認爲匈語符號在現代語言中是不需要的,所以甚至不用打擾) ... – ircmaxell

0

要獲取所有公共屬性的列表,請致電get_object_vars()

(提示:通過對象調用它本身將返回所有屬性。)