PHP-Namespace und die Use-Anweisung: Die Grundlagen verstehen
In PHP bieten Namespaces eine Möglichkeit zum Organisieren und Gruppieren verwandter Klassen, Schnittstellen, und Eigenschaften. Normalerweise ist jeder Namespace einem bestimmten Projekt oder einer bestimmten Bibliothek zugeordnet. Um einen Namespace zu deklarieren, verwenden Sie die folgende Syntax:
namespace Shape;
Diese Zeile gibt an, dass sich alle nachfolgenden Klassen und Methoden im Shape-Namespace befinden.
Im Hinblick auf das spezifische Problem ist es wichtig zu beachten, dass die use-Anweisung einem anderen Zweck dient als die include-Anweisung. Die Include-Anweisung lädt einfach den Inhalt der angegebenen Datei in den aktuellen Bereich und macht ihren Inhalt verfügbar. Im Gegensatz dazu können Sie mit der use-Anweisung auf Klassen oder Schnittstellen aus anderen Namespaces oder dem globalen Namespace verweisen.
In Ihrem Fall ist die use-Anweisung, die Sie in der Datei Circle.php versucht haben, falsch. Die richtige Syntax zum Aliasing von Shape in Ihrer Circle-Klasse mithilfe des Use-Operators wäre wie folgt:
use Shape\Shape;
Mit dieser Anweisung weisen Sie PHP an, Shape aufzulösen innerhalb des Shape-Namespace. Da sowohl die Circle- als auch die Shape-Klasse im selben Namespace definiert sind, ist es nicht erforderlich, das Namespace-Präfix in der Extens-Anweisung anzugeben.
Wenn Sie die Use-Anweisung lieber nicht verwenden möchten, können Sie dies schließlich explizit angeben der vollständig qualifizierte Namespace der Shape-Klasse in der extensions-Anweisung:
class Circle extends \Shape\Shape implements ShapeInterface {
...
}
Dieser Ansatz gibt explizit den Namespace der Shape-Klasse an, sodass die Verwendungsanweisung nicht erforderlich ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3