Konstruktor (__construct)
Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 7 z 91.
Metoda __construct to specjalna metoda, która uruchamia się automatycznie po utworzeniu nowego obiektu. Inicjalizuje właściwości obiektu.
Oto przykład klasy z konstruktorem:
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}Metoda __construct przyjmuje parametry i przypisuje je do właściwości za pomocą $this.
Twórz obiekty za pomocą konstruktora:
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");Gdy wywołujesz new Dog("Rex", "German Shepherd"), PHP automatycznie wywołuje __construct i przekazuje argumenty.
Uzyskaj dostęp do właściwości ustawionych przez konstruktor:
echo $rex->name . "\n";
echo $rex->breed . "\n";
echo $buddy->name . "\n";
echo $buddy->breed . "\n";Wynik:
Rex
German Shepherd
Buddy
Golden RetrieverMożesz też mieć konstruktor z domyślnymi wartościami parametrów:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // domyślna wartość age to 1
echo $fluffy->name . " is " . $fluffy->age . " years old\n";
echo $whiskers->name . " is " . $whiskers->age . " years old\n";Wynik:
Fluffy is 3 years old
Whiskers is 1 years oldKluczowa kwestia: metoda __construct zapewnia, że każdy obiekt jest prawidłowo inicjowany danymi początkowymi w momencie utworzenia. Dzięki niej nie musisz ręcznie ustawiać właściwości po utworzeniu obiektu.
Wyzwanie
ŁatwyOtrzymujesz pliki PHP (book.php i driver.php) do zaimplementowania systemu książek.
Twoje zadanie:
- Uzupełnij klasę
Bookw plikubook.phpo metodę__construct, która inicjalizuje właściwości$title,$authori$pages - W pliku
driver.phpzaimportuj i utwórz obiekt książki"Harry Potter"autorstwa"J.K. Rowling", liczącej400stron
Postępuj zgodnie z komentarzami TODO w każdym pliku.
Spróbuj swoich sił
<?php
require_once 'book.php';
// TODO: Utwórz obiekt Book z następującymi właściwościami:
// title: "Harry Potter", author: "J.K. Rowling", pages: 400
$myBook = ?;
echo "'" . $myBook->title . "' by " . $myBook->author . ", " . $myBook->pages . " pages\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