Klasy a obiekty
Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 3 z 91.
Klasy i obiekty pełnią różne funkcje. Klasa jest planem, a obiekt to coś, co tworzysz na jego podstawie.
Oto przykład klasy z zadeklarowanymi właściwościami:
<?php
class Dog {
public $name;
public $breed;
}Słowo kluczowe public oznacza, że można uzyskać dostęp do tych właściwości spoza klasy. Więcej o public dowiesz się w lekcji poświęconej właściwościom.
Teraz utwórz obiekty klasy Dog:
$dog1 = new Dog();
$dog2 = new Dog();Obiekty mogą mieć indywidualne wartości swoich właściwości:
$dog1->name = "Nicky";
$dog1->breed = "Siberian Husky";
$dog2->name = "Teemon";
$dog2->breed = "Shu'ali";Operator -> służy do uzyskiwania dostępu do właściwości obiektu.
Wypisz dane każdego obiektu:
echo $dog1->name . " is a " . $dog1->breed . "\n";
echo $dog2->name . " is a " . $dog2->breed . "\n";Wynik:
Nicky is a Siberian Husky
Teemon is a Shu'aliKluczowa różnica: Klasa Dog definiuje strukturę wspólną dla wszystkich psów, a obiekty $dog1 i $dog2 reprezentują konkretne, pojedyncze psy o unikalnych wartościach właściwości.
Wyzwanie
ŁatwyUzupełnij kod, aby utworzyć dwa obiekty studenta z klasy Student i ustawić ich właściwości.
student.php: zawiera klasęStudent(zablokowany)driver.php: utwórz obiekty i ustaw ich właściwości
Ustaw następujące wartości:
$student1: imię to"Alice", a ocena to"A"$student2: imię to"Bob", a ocena to"B"
Spróbuj swoich sił
<?php
require_once 'student.php';
// TODO: Utwórz dwa obiekty uczniów
// TODO: Ustaw właściwości student1 (name: "Alice", grade: "A")
// TODO: Ustaw właściwości student2 (name: "Bob", grade: "B")
// Wyświetl informacje o uczniach
echo $student1->name . " has grade " . $student1->grade . "\n";
echo $student2->name . " has grade " . $student2->grade . "\n";
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