Podsumowanie – uporządkowany projekt
Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 14 z 91.
Wyzwanie
ŁatwyZbudujmy kompletną aplikację blogową z odpowiednią organizacją przestrzeni nazw, łącząc wszystko, czego nauczysz się o przestrzeniach nazw, słowie kluczowym use i automatycznym ładowaniu PSR-4.
Utworzysz dobrze zorganizowany projekt składający się z pięciu plików, które pokażą, jak rzeczywiste aplikacje PHP organizują swój kod:
src/Models/Author.php: Zdefiniuj klasęAuthorw przestrzeni nazwBlog\Models. Powinna mieć właściwośćpublic $name, konstruktor, który przyjmuje i ustawia imię, oraz metodęgetBio(), która zwraca"Author: [name]".src/Models/Post.php: Zdefiniuj klasęPostw przestrzeni nazwBlog\Models. Powinna mieć właściwościpublic $titleipublic $author(gdzie author jest obiektemAuthor). Konstruktor przyjmuje tytuł i obiektAuthor, a następnie ustawia oba. Dodaj metodęgetSummary(), która zwraca"[title] by [author name]".src/Services/Publisher.php: Zdefiniuj klasęPublisherw przestrzeni nazwBlog\Services. Powinna mieć metodępublish(Post $post), która przyjmuje obiektPosti zwraca"Published: [post title]". Musisz zaimportować klasęPostza pomocą słowa kluczowegouse, ponieważ znajduje się ona w innej przestrzeni nazw.vendor/autoload.php: Utwórz autoloader PSR-4 za pomocąspl_autoload_register, który mapuje prefiks przestrzeni nazwBlog\na katalogsrc/. Ten pojedynczy autoloader automatycznie obsługuje ładowanie wszystkich Twoich klas.index.php: Punkt wejścia aplikacji. Dołącz autoloader, a następnie użyj słowa kluczowegouse, aby zaimportowaćBlog\Models\Author,Blog\Models\PostiBlog\Services\Publisher. Utwórz obiektAuthoro imieniu"Jane Smith", obiektPostz tytułem"Getting Started with PHP", używając tego autora, oraz obiektPublisher. Wypisz biografię autora, podsumowanie wpisu i wynik opublikowania wpisu (każdy w osobnym wierszu).
Zwróć uwagę, że usługa Publisher zależy od modelu Post. Pokazuje to, jak klasy w różnych przestrzeniach nazw mogą ze sobą współpracować, importując potrzebne elementy za pomocą instrukcji use.
Spróbuj swoich sił
<?php
// Dołącz autoloader
require_once 'vendor/autoload.php';
// TODO: Zaimportuj potrzebne klasy za pomocą instrukcji 'use'
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher
// TODO: Utwórz obiekt Author o nazwie "Jane Smith"
// TODO: Utwórz obiekt Post z tytułem "Getting Started with PHP", używając tego autora
// TODO: Utwórz obiekt Publisher
// TODO: Wypisz biogram autora
// TODO: Wypisz podsumowanie postu
// TODO: Wypisz wynik publikacji postu
?>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