名前空間とステートメントに関して少し問題がありますuse
。
ShapeInterface.php
、Shape.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適切なオートローダーの実装を確認します。