2011-07-16 15 views
2

私のサイトは、この行で非推奨のエラーを持っているPHPで廃止されました:割り当て戻り値は5.3

$obj =& new $class($table,$primkeyArr,$this); 

それが理由の&です。このエラーは次のとおりです。

Deprecated: Assigning the return value of new by reference is deprecated in .... 

これはPHP 5.3の問題です。

この行から&を削除すると、エラーは解決します。しかし、PHPバージョンが低い(5.2)サーバーに自分のサイトを置いても問題ないかどうかはわかりません。

PHP 5.2とPHP 5.3の両方で&が正常に機能していますか?

+2

「PHP 5.2とPHP 5.3の両方で&okを削除できますか?」はい。 – vascowhite

+0

[PHP 5.3の重複した可能性があり、参照のnewの戻り値を割り当てる](http://stackoverflow.com/questions/4673472/php-5-3--assigning-the-return-value-of-new-参照によって) – NikiC

答えて

5

PHP 5では、オブジェクトはデフォルトで参照のように扱われます。したがって、&を削除しても、おそらく何も変更されません。

しかし、参照による割り当てで古い参照が破損するため、there might still be a difference

1

参照を返しても、関数やメソッドのシグネチャには反映されないようにすることは推奨されていません。戻り値を割り当てるときだけでなく、名前の前に&がなければなりません。

public function &getValue() 
{ 
    return $this->value; 
} 

... 

$myValue = &$obj->getValue(); 

manualより詳しく説明します。

0

http://php.net/manual/en/language.references.pass.php

それは単なる警告です。あなたは本当にそれを必要としませんが、短い答えは警告を発するだけです。あなたのPHPのconfigのerror_handlingのレベルに応じて、他の5.3システムでそれを見るかどうかによって決まります。

関連する問題