4

この線

$db =& JFactory::getDBO();

私にこれを与えますE_STRICT

厳格な基準:参照により変数のみを割り当てる必要があります

これは正確にはどういう意味ですか?JFactoryドキュメントに記載されているとおりに使用しています。心配する必要がありますか?

エラーをグーグルで検索すると、無効にするだけでよいと言っているJoomlaの人々がたくさんいますE_STRICT。私は自分のスキルを向上させようとしているので、簡単な方法をとらないほうがいいです。

4

1 に答える 1

5

これはレビューではないので、これは本当にSOにとっての質問です。しかし、もしあなたがそこでこれを尋ねたとしたら、彼らはこれを反対票を投じたでしょう、あなたの頭はすぐに回転したでしょう。これは十分に文書化されているので、助けを求める前に、これらの種類のものを実際にグーグルで検索する必要があります。その警告だけであなたの質問に答えるのに十分だったでしょう。

ただし、このエラーの理由は、これが変数ではなくクラスメソッドであるためです。そして、静的なものを起動します。警告やエラーを常に聞く必要があるその厳格な警告は、参照するものが何もないことを示しています。参照は、行った変更を自動的に複製$dbし、参照している変数に適用して、効果的に複製します。だから今、あなたは問題を見始めます。私が言ったように、あなたは変数を参照していません。あなたは単にメモリのセクションであり、参照することができないメソッドの戻り値を参照しています。

だから、あなたはこれを行うことができます:

$temp = JFactory::getDBO();
$db =& $temp;

そして、それはうまくいくでしょう。ただし、これは完全に不要です。ここでは参照は完全に不要です。本当にやりたいのは、そのメソッドの戻り値を変数に設定し、それをコードの残りの部分で使用することです。通常、特にプログラミングを始めたばかりの人にとっては、参照は必要ありません。前の変数を新しい変数に割り当て、変更を加えてから、新しい変数を古い変数に再割り当てすることで、同じことを実現できます。もう少し学び、理解が深まるまで、参照はそのままにしておきます。何年にもわたるプログラミングの後でも、私はめったにそれを使用しません。

于 2012-08-16T20:26:35.497 に答える