如何執行一個類的所有字段的foreach,無論是從該類還是從沒有?例如,考慮以下類:關於所有對象屬性的foreach
class Foo
{
public $a;
public $b;
private $c;
private $d;
public function __construct($params)
{
foreach($params as $k=>$v){
$this->$k = $v;
}
}
public function showAll()
{
$output = array();
foreach (this as $k=>$v) { // How to refer to all the class properties?
$output[$k] = $v;
}
return $output;
}
}
如何可能會在showAll()
方法foreach()
指$a
,$b
,$c
和$d
屬性?
對於這個問題,是否可以從課外獲得所有公共財產?
$params = array();
$foo = new Foo($params);
foreach ($foo->allProperties as $f=>$v) { // how to do this?
echo "{$f}: {$v}\n";
}
'SHOWALL()'返回所有的屬性,如果你用'$ this'修正錯字(缺少美元符號)。這個問題有點不清楚。 – Jon
你的類沒有任何靜態屬性,所以在技術上這個類沒有值。你的意思是對象屬性?這將與反思一起工作。 –
謝謝沃爾夫岡,我的意思是對象屬性。這應該包括任何存在的靜態成員。 – dotancohen