PHP 名前空間と「use」 質問する

PHP 名前空間と「use」 質問する

名前空間とステートメントに関して少し問題がありますuse

ShapeInterface.phpShape.phpの3 つのファイルがありますCircle.php

私は相対パスを使用してこれを実行しようとしているので、これをすべてのクラスに配置しました。

namespace Shape; 

私のサークルクラスには次のようなものがあります:

namespace Shape;
//use Shape;
//use ShapeInterface;

include 'Shape.php';
include 'ShapeInterface.php';    

class Circle extends Shape implements ShapeInterface{ ....

これらのステートメントを使用すると、エラーは発生しません。これらのステートメントincludeを試すと、次の結果が表示されます。use

致命的なエラー: /Users/shawn/Documents/work/sites/workspace/shape/Circle.php の 8 行目にクラス 'Shape\Shape' が見つかりません

誰かこの問題について少しアドバイスをいただけませんか?

ベストアンサー1

useオペレーターは、クラス、インターフェース、またはその他の名前空間の名前に別名を付けるために使用されます。ほとんどのuseステートメントは、短縮したい名前空間またはクラスを参照します。

use My\Full\Namespace;

は以下と同等です:

use My\Full\Namespace as Namespace;
// Namespace\Foo is now shorthand for My\Full\Namespace\Foo

演算子をクラス名またはインターフェース名とともに使用する場合use、次の用途があります。

// after this, "new DifferentName();" would instantiate a My\Full\Classname
use My\Full\Classname as DifferentName;

// global class - making "new ArrayObject()" and "new \ArrayObject()" equivalent
use ArrayObject;

演算子useは、自動読み込みincludeオートローダーを登録することで( などspl_autoload_register)、クラスは自動ロードされます( の必要性がなくなります)。PSR-4適切なオートローダーの実装を確認します。

おすすめ記事