事象
php7cc でチェックを掛けた際、以下のようなMSGが出力された。
> Line 3528: Possible object property creation during by-reference assignment
$this->scale =& $aAxis->scale;
原因
メッセージを日本語に直訳すると、以下の意味。
参照による割り当て中にオブジェクトプロパティが作成される可能性があります
Attention Required! | Cloudflare
stackOverFlowを見てみると、php7で =& の扱いが変わったとのこと。
このメッセージは、以下のことをすると出力される。
-
プロパティへの参照を別のプロパティに割り当て
-
配列参照を配列要素に割り当てる
例えば、
$array = [];
$array["a"] =& $array["b"];
$array["b"] = 1;
var_dump($array);
このコードの配列の中身の順番は、
php5であれば、
[“b” => 1, “a” => 1]
であったが、
php7であれば、
["a" => 1, "b" => 1]
となるとのこと。
対策方法
オブジェクト内のプロパティの順序や連想配列内の要素の順序を実際に気にしない限り、この警告は無視できます。
配列などの中身の順番気にしないなら無視してOKよ。とのこと。
コメント