警告 Possible object property creation during by-reference assignment

php-logo php
スポンサーリンク

 

事象

php7cc でチェックを掛けた際、以下のようなMSGが出力された。

> Line 3528: Possible object property creation during by-reference assignment
$this->scale =& $aAxis->scale;

 

原因

 

メッセージを日本語に直訳すると、以下の意味。

 

参照による割り当て中にオブジェクトプロパティが作成される可能性があります

 

What do "possible" warnings mean? Using php7cc gives me this output (PHP 5.6 to 7.2)
I'm using php7cc to check if the certain functionalities work after upgrading from PHP 5.6 to PHP 7.2. It's an old project and that's why it has a lot of legacy...

stackOverFlowを見てみると、php7で =& の扱いが変わったとのこと。

このメッセージは、以下のことをすると出力される。

  • プロパティへの参照を別のプロパティに割り当て

  • 配列参照を配列要素に割り当てる

 

例えば、

 

$array = [];
$array["a"] =& $array["b"];
$array["b"] = 1;
var_dump($array);

 

このコードの配列の中身の順番は、

php5であれば、

[“b” => 1, “a” => 1]

であったが、

 

php7であれば、

["a" => 1, "b" => 1]

となるとのこと。

 

 

対策方法

オブジェクト内のプロパティの順序や連想配列内の要素の順序を実際に気にしない限り、この警告は無視できます。

配列などの中身の順番気にしないなら無視してOKよ。とのこと。

 

 

コメント

タイトルとURLをコピーしました