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 class verwendest, kann mühsam werden. Mit dem use-keyword kannst du eine class am Anfang deiner Datei importieren, sodass du sie über ihren Kurz­namen referenzieren kannst.

Instead, \Blog\User wiederholt 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 classes aus demselben namespace mit gruppierten import-Anweisungen einbinden:

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

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

Wichtiger Hinweis: Die use-Anweisung muss nach der namespace-Deklaration (falls vorhanden) und vor jedem anderen Code stehen. Dadurch wird dein Code übersichtlicher und leichter lesbar, da sich wiederholende Namespace-Pfade vermieden werden.

challenge icon

Aufgabe

Einfach

Organisieren wir eine Messaging-Anwendung mit dem use-keyword, um classes sauber zu importieren und zu vermeiden, überall vollständige namespace-Pfade zu schreiben.

Du erstellst drei files, die zusammenarbeiten:

  • Messaging/Email.php: Define eine Email-class im Messaging-namespace. Sie sollte eine public $address-property, einen constructor, der die address accepts und sets, sowie eine send()-method haben, die "Sending email to [address]" returns.
  • Messaging/SMS.php: Define eine SMS-class im Messaging-namespace. Sie sollte eine public $phone-property, einen constructor, der die phone number accepts und sets, sowie eine send()-method haben, die "Sending SMS to [phone]" returns.
  • main.php: Include beide class files und verwende anschließend das use-keyword, um beide classes zu importieren. Create ein Email-object mit der address "alice@example.com" und ein SMS-object mit der phone "555-1234". Print das result des Aufrufs von send() für jedes object (each in einer eigenen line).

In main.php importierst du die classes oben mit use-Anweisungen, statt new \Messaging\Email(...) zu schreiben, sodass du einfach new Email(...) und new SMS(...) schreiben kannst.

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