Ich habe ein kleines Problem mit Namespaces und den use
Anweisungen.
Ich habe drei Dateien: ShapeInterface.php
, Shape.php
und Circle.php
.
Ich versuche dies über relative Pfade zu tun, daher habe ich dies in alle Klassen eingefügt:
namespace Shape;
In meiner Kreisklasse habe ich folgendes:
namespace Shape;
//use Shape;
//use ShapeInterface;
include 'Shape.php';
include 'ShapeInterface.php';
class Circle extends Shape implements ShapeInterface{ ....
Wenn ich die include
Anweisungen verwende, erhalte ich keine Fehler. Wenn ich die use
Aussagen versuche, bekomme ich:
Schwerwiegender Fehler: Die Klasse 'Shape \ Shape' wurde in Zeile 8 in /Users/shawn/Documents/work/sites/workspace/shape/Circle.php nicht gefunden
Könnte mir bitte jemand eine kleine Anleitung zu diesem Thema geben?
php
namespaces
Shawn Northrop
quelle
quelle
Antworten:
Der
use
Operator dient zum Vergeben von Aliasnamen für Namen von Klassen, Schnittstellen oder anderen Namespaces. Die meistenuse
Anweisungen beziehen sich auf einen Namespace oder eine Klasse, die Sie kürzen möchten:ist äquivalent zu:
Wenn der
use
Operator mit einem Klassen- oder Schnittstellennamen verwendet wird, hat er folgende Verwendungszwecke:Der
use
Bediener ist nicht mit dem automatischen Laden zu verwechseln . Eine Klasse wird automatisch geladen (ohne dass dies erforderlich istinclude
), indem ein Autoloader registriert wird (zspl_autoload_register
. B. mit ). Vielleicht möchten Sie PSR-4 lesen , um eine geeignete Autoloader-Implementierung zu sehen.quelle
Wenn Sie Ihren Code in Namespaces bestellen müssen, verwenden Sie einfach das Schlüsselwort
namespace
:file1.php
In file2.php
Sie können auch verwenden
use
. Wenn in Datei2 Sie setzenuse foo\bar as mypath;
Sie müssen
mypath
anstelle einerbar
beliebigen Stelle in der Datei Folgendes verwenden:Verwenden
use foo\bar;
ist gleichuse foo\bar as bar;
.quelle