Menu
Coddy logo textTech

Słowo kluczowe use

Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 11 z 91.

Wpisywanie pełnej ścieżki przestrzeni nazw za każdym razem, gdy używasz klasy, może być męczące. Słowo kluczowe use pozwala zaimportować klasę na początku pliku, dzięki czemu możesz odwoływać się do niej za pomocą krótkiej nazwy.

Zamiast wielokrotnie pisać \Blog\User, możesz zaimportować tę klasę raz:

<?php
use Blog\User;

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

Gdy potrzebujesz klas z różnych przestrzeni nazw o tej samej nazwie, możesz utworzyć alias za pomocą słowa kluczowego as:

<?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";

Wynik:

Alice
alice@example.com

Możesz też importować wiele klas z tej samej przestrzeni nazw za pomocą grupowanych importów:

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

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

Kluczowa kwestia: Instrukcja use musi występować po deklaracji namespace (jeśli taka istnieje) i przed jakimkolwiek innym kodem. Dzięki niej kod jest bardziej przejrzysty i łatwiejszy do czytania, ponieważ eliminuje powtarzające się ścieżki przestrzeni nazw.

challenge icon

Wyzwanie

Łatwy

Uporządkujmy aplikację do przesyłania wiadomości, używając słowa kluczowego use, aby przejrzyście importować klasy i uniknąć wpisywania pełnych ścieżek przestrzeni nazw w każdym miejscu.

Utworzysz trzy współpracujące ze sobą pliki:

  • Messaging/Email.php: Zdefiniuj klasę Email w przestrzeni nazw Messaging. Powinna mieć właściwość public $address, konstruktor, który przyjmuje i ustawia adres, oraz metodę send(), która zwraca "Sending email to [address]".
  • Messaging/SMS.php: Zdefiniuj klasę SMS w przestrzeni nazw Messaging. Powinna mieć właściwość public $phone, konstruktor, który przyjmuje i ustawia numer telefonu, oraz metodę send(), która zwraca "Sending SMS to [phone]".
  • main.php: Dołącz oba pliki z klasami, a następnie użyj słowa kluczowego use, aby zaimportować obie klasy. Utwórz obiekt Email z adresem "alice@example.com" i obiekt SMS z numerem telefonu "555-1234". Wyświetl wynik wywołania metody send() dla każdego obiektu (każdy w osobnym wierszu).

W pliku main.php, zamiast pisać new \Messaging\Email(...), zaimportujesz klasy na początku za pomocą instrukcji use, dzięki czemu wystarczy napisać new Email(...) i new SMS(...).

Spróbuj swoich sił

<?php
// Dołącz pliki klas
require_once 'Messaging/Email.php';
require_once 'Messaging/SMS.php';

// TODO: Użyj słowa kluczowego 'use', aby zaimportować obie klasy z przestrzeni nazw Messaging
// Dzięki temu możesz napisać 'new Email(...)' zamiast 'new \Messaging\Email(...)'


// TODO: Utwórz obiekt Email z adresem "alice@example.com"


// TODO: Utwórz obiekt SMS z numerem telefonu "555-1234"


// TODO: Wypisz wynik wywołania send() na każdym obiekcie (każdy w osobnym wierszu)

?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator PHP online