130

名前空間と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ステートメントを試してみると、次のようになります。

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

誰かが私にこの問題について少し指導してもらえますか?

4

2 に答える 2

185

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と混同しないでください。オートローダーを登録することにより、クラスが自動ロードされます(の必要性を否定します)。PSR-4を読んで、適切なオートローダーの実装を確認することをお勧めします。includespl_autoload_register

于 2012-05-10T21:17:29.757 に答える