2012-03-15 29 views
12

PHPでは、クラスレベルで名前空間を使用しています。しかし、Netbeansは私のグローバル関数のネームスペースを教え続けています。私はPHPのグローバル関数に名前を付ける必要がありますか?

str_replace('stuff'); 

を入力した場合たとえば、その後、Netbeansのは、それを変更することをお勧めします:

\str_replace('stuff'); 

これはPHPの勧告です、または単にNetbeansの熱心されて?いずれにしてもPHPのマニュアルで何かを見つけることができませんでした。

コードで問題が発生しているとは限りません。しかし、Netbeansを最初に推奨する理由を知らずにNetbeansを無視するのは間違っています。しかし、それが正しいことを知らずに自分のコーディングの練習を変更するだけで正しいと感じることもありません。

+0

Ìこのような公式の勧告に気づいていません。あなたが使用しているコーディング規則の一部となりますか? – Gordon

+0

あなたがコード内の名前空間を使用していて、他の名前空間内からグローバル関数を呼び出すのは、おそらくそうであるはずですが、どこにでも名前空間を使用していない場合はそうではありません。 – h00ligan

+0

@ h00ligan PHPマニュアルには何も言われておらず、PHPは関数呼び出しのグローバルスコープにフォールバックするので、必ずしも必要ではありません。 – Gordon

答えて

5

あり

には、このような勧告はありませんまた、それは、PHPがグローバル関数の定義にフォールバックされますので、その名前の機能ではありませんときに、グローバル識別子ですを使用することが必要です現在の名前空間

これは、識別子を追加する唯一の理由は、誰かが現在の名前空間に同じ名前の関数を追加したときにコードの動作が誤って変更されるのを防ぐために、 。

あなたのIDEがこれを提案する理由の詳細については、Netbeans Mailing Listでお尋ねしたいと思うかもしれません。

1

Netbeans 7.0.1、PHP Plugin 1.17.1を使用していますが、これは再現できません。とにかくそれは大会ではなく、私はそれをベストプラクティスとはみなさないでしょう。

+0

奇妙な - 私はデフォルトを変更していません。正確なメッセージは 'Fix name to "\ str_replace"です。 –

+0

それで、それはそれ以降のバージョンの問題であるようです。私はNetBeans 8.1を持っているので、@Blowskiというユーザーが言うように、それがあります。 –

0

NetBeansは単に名前空間as documentedを解決する文書化されたルールを、次のされていません。(日時など)

  1. グローバルクラスPHPは、現在の名前空間に、そのクラスを探します、それ以外の場合は修飾する必要があります。
  2. グローバル関数(array_filterなど)と定数は、現在の名前空間に存在しない場合は、グローバル名前空間(明示的な修飾なし)で検索されます。

つまり、あなたのコードは、文書化されたルールに基づいて慣用的であると考えられるべきです。

関連する問題