Menu
Coddy logo textTech

Das use-Schlüsselwort

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

Den vollständigen Namespace-Pfad jedes Mal zu schreiben, wenn du eine Klasse verwendest, kann mühsam werden. Mit dem Schlüsselwort use kannst du eine Klasse am Anfang deiner Datei importieren, sodass du sie mit ihrem kurzen Namen referenzieren kannst.

Statt wiederholt \Blog\User zu schreiben, kannst du es einmal importieren:

<?php
use Blog\User;

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

Wenn du classes aus unterschiedlichen Namespaces mit demselben Namen benötigst, kannst du mithilfe des as-keyword 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

Du kannst auch mehrere Klassen aus demselben Namespace mithilfe gruppierter Imports importieren:

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

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

Wichtiger Punkt: Die Anweisung use muss nach der Deklaration von namespace (falls vorhanden) und vor jedem anderen Code stehen. Sie macht deinen Code übersichtlicher und leichter lesbar, da sie sich wiederholende Namespace-Pfade eliminiert.

challenge icon

Aufgabe

Einfach

Organisieren wir eine Messaging-Anwendung, indem wir das Schlüsselwort use verwenden, um Klassen übersichtlich zu importieren und zu vermeiden, überall vollständige Namespace-Pfade zu schreiben.

Du wirst drei Dateien erstellen, die zusammenarbeiten:

  • Messaging/Email.php: Definiere eine Email-Klasse im Namespace Messaging. Sie sollte eine public $address-Eigenschaft, einen Konstruktor, der die Adresse entgegennimmt und festlegt, sowie eine send()-Methode besitzen, die "Sending email to [address]" zurückgibt.
  • Messaging/SMS.php: Definiere eine SMS-Klasse im Namespace Messaging. Sie sollte eine public $phone-Eigenschaft, einen Konstruktor, der die Telefonnummer entgegennimmt und festlegt, sowie eine send()-Methode besitzen, die "Sending SMS to [phone]" zurückgibt.
  • main.php: Binde beide Klassendateien ein und verwende anschließend das Schlüsselwort use, um beide Klassen zu importieren. Erstelle ein Email-Objekt mit der Adresse "alice@example.com" und ein SMS-Objekt mit der Telefonnummer "555-1234". Gib das Ergebnis des Aufrufs von send() für jedes Objekt aus (jeweils in einer eigenen Zeile).

Verwende in main.php statt new \Messaging\Email(...) zu schreiben, use-Anweisungen am Anfang, um die Klassen zu importieren. So kannst du einfach new Email(...) und new SMS(...) schreiben.

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
// Dadurch kannst du 'new Email(...)' statt 'new \Messaging\Email(...)' schreiben


// TODO: Create an Email object with address "alice@example.com"


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


// TODO: Gib das Ergebnis des Aufrufs von send() auf jedem Objekt aus (jedes 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

Übe selbstständig: Online-PHP-Compiler