2
我有以下代碼(來自Zend的認證練習拍攝):值echo語句內改變
<?php
class Magic
{
public $a = "A";
protected $b = array("a" => "A", "b" => "B", "c" => "C");
protected $c = array(1, 2, 3);
public function __get($v)
{
echo "$v,";
return $this->b[$v];
}
public function __set($var, $val)
{
echo "$var: $val,";
$this->$var = $val;
}
}
$m = new Magic();
echo $m->a ."," .$m->b ."," .$m->c .",";
$m->c = "CC";
echo $m->a ."," .$m->b ."," .$m->c;
此輸出以下:
b,c,A,B,C,c: CC,b,c,A,B,C
大部分輸出我明白的,但第一echo聲明我沒有 - 輸出如何可能以「A」以外的任何其他開始?畢竟,a是一個公共屬性,它是正確定義的,因此不會調用__get,即使它被調用,我仍然不知道它將如何輸出「b」。
如果我改變了第一回聲聲明只是:
echo $m->a;
它輸出:
A
正如預期的那樣。所以這個值在(完整)echo語句中改變,大概是與優先級有關。
對這個輸出的完整解釋真的很感興趣。謝謝!
的代碼是從Zend認證的練習,我不是要得到不同的結果,我只是想知道爲什麼輸出是因爲它是 – DJC
是的,我知道。解釋不清楚? – fusion3k
好吧,打印立即執行,而回聲將首先連接? – DJC