Menu
Coddy logo textTech

Das use-Schlüsselwort

Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 11 von 91.

Das Schreiben des vollständigen Namespace-Pfads bei jeder Verwendung einer Klasse kann mühsam werden. Das Schlüsselwort use ermöglicht es Ihnen, eine Klasse am Anfang Ihrer Datei zu importieren, sodass Sie sie über ihren Kurznamen referenzieren können.

Anstatt \Blog\User wiederholt zu schreiben, können Sie es einmal importieren:

<?php
use Blog\User;

$user = new User("Alice");
echo $user->name;

Wenn Sie Klassen aus verschiedenen Namespaces mit demselben Namen benötigen, können Sie mit dem Schlüsselwort as einen Alias erstellen:

<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;

$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");

echo $blogger->name . "\n";
echo $customer->email . "\n";

Ausgabe:

Alice
alice@example.com

Sie können auch mehrere Klassen aus demselben Namespace mithilfe von gruppierten Importen importieren:

<?php
use Blog\{User, Post, Comment};

$user = new User("Alice");
$post = new Post("Hello World");

Wichtiger Punkt: Die use-Anweisung muss nach der namespace-Deklaration (falls vorhanden) und vor jedem anderen Code stehen. Sie macht Ihren Code sauberer und einfacher zu lesen, indem sie repetitive Namespace-Pfade eliminiert.

challenge icon

Aufgabe

Einfach

Lassen Sie uns eine Messaging-Anwendung organisieren, indem wir das Schlüsselwort use verwenden, um Klassen sauber zu importieren und zu vermeiden, überall vollständige Namespace-Pfade schreiben zu müssen.

Sie werden drei Dateien erstellen, die zusammenarbeiten:

  • Messaging/Email.php — Definieren Sie eine Email-Klasse im Namespace Messaging. Sie sollte eine Eigenschaft public $address, einen Konstruktor, der die Adresse akzeptiert und setzt, und eine Methode send() haben, die "Sending email to " . $this->address zurückgibt.
  • Messaging/SMS.php — Definieren Sie eine SMS-Klasse im Namespace Messaging. Sie sollte eine Eigenschaft public $phone, einen Konstruktor, der die Telefonnummer akzeptiert und setzt, und eine Methode send() haben, die "Sending SMS to " . $this->phone zurückgibt.
  • main.php — Binden Sie beide Klassendateien ein und verwenden Sie dann das Schlüsselwort use, um beide Klassen zu importieren. Erstellen Sie ein Email-Objekt mit der Adresse "alice@example.com" und ein SMS-Objekt mit der Telefonnummer "555-1234". Geben Sie das Ergebnis des Aufrufs von send() für jedes Objekt aus (jeweils in einer eigenen Zeile).

In main.php importieren Sie die Klassen oben mit use-Anweisungen, anstatt new \Messaging\Email(...) zu schreiben, sodass Sie einfach new Email(...) und new SMS(...) schreiben können.

Spickzettel

Das Schlüsselwort use importiert eine Klasse am Anfang Ihrer Datei, sodass Sie sie über ihren Kurznamen anstelle des vollständigen Namespace-Pfads referenzieren können:

<?php
use Blog\User;

$user = new User("Alice");

Wenn Klassen aus verschiedenen Namespaces denselben Namen haben, erstellen Sie mit dem Schlüsselwort as einen Alias:

<?php
use Blog\User as BlogUser;
use Shop\User as ShopUser;

$blogger = new BlogUser("Alice");
$customer = new ShopUser("alice@example.com");

Importieren Sie mehrere Klassen aus demselben Namespace mithilfe von gruppierten Importen:

<?php
use Blog\{User, Post, Comment};

$user = new User("Alice");
$post = new Post("Hello World");

Die use-Anweisung muss nach der namespace-Deklaration (falls vorhanden) und vor jedem anderen Code stehen.

Probier es selbst

<?php
// Die Klassendateien einbinden
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: Verwende das 'use'-Schlüsselwort, um beide Klassen aus dem Messaging-Namespace zu importieren
// Dies ermöglicht es dir, 'new Email(...)' anstelle von 'new \Messaging\Email(...)' zu schreiben


// TODO: Erstelle ein Email-Objekt mit der Adresse "alice@example.com"


// TODO: Erstelle ein SMS-Objekt mit der Telefonnummer "555-1234"


// TODO: Gib das Ergebnis des Aufrufs von send() für jedes Objekt aus (jeweils in einer eigenen Zeile)

?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung