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.
Wyzwanie
ŁatwyUporzą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ęEmailw przestrzeni nazwMessaging. 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ęSMSw przestrzeni nazwMessaging. 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 kluczowegouse, aby zaimportować obie klasy. Utwórz obiektEmailz adresem"alice@example.com"i obiektSMSz numerem telefonu"555-1234". Wyświetl wynik wywołania metodysend()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)
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe $thisMetodyWłaściwościKonstruktor (__construct)Destruktor (__destruct)Powtórka — prosty kalkulator4Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe parent::Przesłanianie metodSłowo kluczowe finalKlasy abstrakcyjnePowtórzenie – hierarchia pracowników7Enkapsulacja
Public, protected, privateModyfikatory dostępu w szczegółachGettery i setteryUkrywanie informacjiPromocja parametrów konstruktora (8.0)Podsumowanie — system ewidencji studentów2Przestrzenie nazw i autoloading
Wprowadzenie do przestrzeni nazwSłowo kluczowe useStandard autoloadingu PSR-4Autoloader ComposeraPodsumowanie – uporządkowany projekt5Interfejsy i kontrakty
Wprowadzenie do interfejsówImplementowanie interfejsówImplementowanie wielu interfejsówInterfejs a klasa abstrakcyjnaPodpowiadanie typów za pomocą interfejsówPodsumowanie — kalkulator kształtów8Metody magiczne
Wprowadzenie do metod magicznych__toString i __debugInfo__get, __set, __isset, __unset__call i __callStatic__clone i klonowanie obiektów__serialize i __unserializePodsumowanie — własna kolekcja11System typów i obsługa błędów
Deklaracje typówTypy nullableTypy sumy i przecięciaKlasy wyjątkówNiestandardowa hierarchia wyjątkówTry, Catch, FinallyPodsumowanie — walidator formularzy14Projekt: Zarządzanie biblioteką
Przegląd projektuKlasy książki i użytkownika3Właściwości klas
Właściwości instancji a właściwości statyczneStałe w klasachMetody i właściwości statyczneWłaściwości prywatne i chronioneWłaściwości tylko do odczytu (PHP 8.1)Podsumowanie — menedżer kont bankowych6Polimorfizm
Ponowne omówienie nadpisywania metodPolimorfizm za pomocą interfejsówPodpowiedzi typów i typy sumyPóźne wiązanie statycznePodsumowanie — procesor płatności9Cechy
Wprowadzenie do cechKorzystanie z wielu cechRozwiązywanie konfliktów cechMetody abstrakcyjne w cechachCechy a dziedziczenie12Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec StrategyPoćwicz samodzielnie: Kompilator PHP online