2012-03-16 6 views
0
$class_name = 'MDB2_Statement_'.$this->phptype; 
     $statement = null; 
     $obj =& new $class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset); 

上記のコードは古いですが、私はnew演算子と参照エラー

$class_name='MDB2_Statement_'.$this->phptype; 
... 
$obj_=new class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset); 
$obj=&$obj_; 

のようなものの中にそれを変更したいと思います。しかし、これは正しい行動にはなりません。誰でも私に修正を提供できますか?

[UPDATE] そのまま私は古いコードを残せば、私がロードされているすべてのビューページでは、いくつかの「非推奨の警告」に遭遇し

非推奨:新しいの戻り値によって割り当て ライン例えば391

にPEAR \ MDB2.php \ \ xamppの\ htdocsに... \ APPLI \ PHPの\ライブラリ:リファレンスはCで非推奨 あります。

私はそのファイルを開き、何らかの方法で編集したいと思います(分かりません)ので、Deprecatedが去るようにします。現在の唯一の解決策は、古いものが書かれたものと一致するように、適切なPHPバージョンを含むXAMPPを再インストールすることです。私は、再インストールをせずにこれらの警告に対処する方法を見つけ出すことは失われています。すべてのページの上に非難されたものを見たいと思っています。ありがとうございました。

+0

PHP 5以降では、オブジェクトの参照によって自動的に割り当てられます。アンパサンド(&)を取り除いた後にどのような警告が表示されますか – andho

+0

ファイル内で使用されなくなりました......私は1.7.7を使用しています。XAMPPのPHP –

+2

「ファイルで非推奨」は、非常にありそうもない! – andho

答えて

0

この方法で、PHP 5.3.10でオブジェクトの参照を作成することができます。

$firstObj = new something(); 
$referenceObj = &$firstObj; 
+1

それとも、あなただけのため、別の変数を割り当てることができます: '$ referenceObj = $ firstObj;'。ここでの別の答えの@decezeに従って、非参照コピーを取得するためにオブジェクトを明示的に複製する必要があります。 – halfer

+0

"$ referenceObj = $ firstObj;"を使用すると、このような文の後に$ referenceObjに新しい値を割り当てることができます。 "$ referenceObj = null;"しかし、参照を作成すると、$ referenceObjがObjectとして扱われるため、参照を作成することはできません。 –

+1

ああ、私はあなたと一緒です。私は、いずれかの方法である変数を他の変数と同じにすると、ある変数を使ってオブジェクトを変更すると、もう一方の変数が変更されるという点が強調されました。私は、新しい割り当てが独立したコピーではないことを読者に明らかにしていました ')。 – halfer

4

PHPが文句を言っているだけの事はこれです:

$obj =& new $class_name... 
    ^

オブジェクトがちょうど取得PHP 5で常に参照されているので、あなたは、必要がないともう参照で割り当てを使用しないでください&を取り除いて、それだけです。

+0

ありがとう、実際にはそうではありません、私が使用している古いコードは、 DBを多く扱うローカル企業のシステム。私はあなたの方法を試して、それは一度失敗しました。今私はそれを動作させるためにステップ参照で新しいステップが必要です。 –

+0

「オブジェクトは常に参照です」とはどういう意味ですか?私はオブジェクトを2つの変数にコピーすることはできませんそれらは独立して動作していますか?編集:聖なるくそ、私は決してそれを知った:http://codepad.org/MdQ2T20C –

+0

@マッドそこに行く。オブジェクトのコピーを作成するには、そのオブジェクトを明示的にクローンする必要があります。 – deceze

0

なぜオブジェクトで参照演算子を使用するのですか? オブジェクトがメモリに配置され、オブジェクトにバインドされたすべての変数がメモリを変更します。言い換えれば

$a1 = new stdClass; 
$a2 = $a1; 

は同じのように影響を与えるだろう。

$a1 = 1000; 
$a2 = &$a1; 
関連する問題