3

PHP-5.3+ で名前空間を使用する方法を説明する記事はたくさんありますが、useステートメントの規則に特に興味があります。

ほとんどの記事で指摘されていないことはuse、名前空間またはクラスを参照できるということです。したがって、PSR-0 の場所 Foobar/Helper/Helper.php でクラスを参照するには、次のいずれかを実行できます。

use \Foobar\Helper; // This is a namespace
class Whatever {
    ...
    Helper\Helper::MyHelperMethod();

またはこれ:

use \Foobar\Helper\Helper; // This is a class
class Whatever {
    ...
    Helper::MyHelperMethod();

彼らが各ステートメントで使用しているドキュメントを見useたことがないため、推測につながることがよくあります。

では、どちらか一方のアプローチを使用するのは悪い習慣ですか? それとも、コンセプトをミックスするためですか?それとも、人々がめったに記録しないことの 1 つにすぎないのでしょうか。

それとも、問題全体を誤解しているだけですか?

4

2 に答える 2

3

名前空間がある場合は\Foobar\Helper

use \Foobar\Helper;

名前空間修飾子として名前空間からすべてのクラスにアクセスできます。この線\Foobar\HelperHelper

use \Foobar\Helper\Helper;

名前空間修飾子なしでアクセスするクラスをより詳細に制御できます。一方、use開発中に宣言をコードと同期させておくのは非常に面倒です。第三に、ファイルに存在する依存関係に関するドキュメントとして機能します。

ステートメントが名前空間を参照しているかクラスを参照しているかを区別するuseには、Eclipse PDT などの IDE が役立ちます。

于 2013-10-27T18:10:00.973 に答える
2

ポイントはuse、同じ完全修飾クラス名を繰り返し入力することを減らすことです。より短く、より読みやすいコードを作成できます。コードを記述する最も読みやすい方法は、状況によって異なります。名前空間から 1 つのクラスだけが必要な場合は、直接エイリアスを作成できます。1 つの名前空間から多くのクラスが必要な場合は、その名前空間までのエイリアスのみを使用するのが最も理にかなっています。別の名前空間の複数のクラスが同様の名前である場合、名前空間までのエイリアスのみを使用すると、コードがより明確になります。それは完全にあなたと状況次第です。

于 2013-10-27T18:16:12.160 に答える