0
我問這可能是該變種分配定義的後果:由IDE(phpStorm)允許多瓦爾分配在一個句子中的PHP
$component = $id = $class = '';
我的意思是,代碼不返回任何警告,致命或其他任何東西,但......有任何但是?
您認爲如何?
我問這可能是該變種分配定義的後果:由IDE(phpStorm)允許多瓦爾分配在一個句子中的PHP
$component = $id = $class = '';
我的意思是,代碼不返回任何警告,致命或其他任何東西,但......有任何但是?
您認爲如何?
這沒關係。
PHP在寫入系統上使用副本。這意味着使用諸如字符串或整數等原始類型真的會在內存中創建,並且在您的示例中可能會沒問題。
PHP
$component = $id = $class = 'foobar';
var_dump($component);
var_dump($id);
var_dump($class);
輸出
string 'foobar' (length=6)
string 'foobar' (length=6)
string 'foobar' (length=6)
但要小心,當你做到這一點與對象,對象是通過引用傳遞,並有不同的行爲:
PHP
class Obj
{
public $_name;
}
$a = $b = new Obj();
$component = $id = $class = 'foobar';
$b->_name = 'Reynier'; //try to change name of second object only
$id = 'Reynier'; // try to change $id only
var_dump($a);
var_dump($b);
var_dump($component);
var_dump($id);
var_dump($class);
輸出
#Both object are changed
object(Obj)[1]
public '_name' => string 'Reynier' (length=7)
object(Obj)[1]
public '_name' => string 'Reynier' (length=7)
#only $id was changed
string 'foobar' (length=6)
string 'Reynier' (length=6)
string 'foobar' (length=6)
它的罰款。這是標準的語法。 –
我個人並沒有在PHP中看到任何錯誤。請注意,這種類型的分配在其他語言中可能會有所不同。在JavaScript中,我相信,這將創建指向同一對象的三個變量。 – aynber