PHP/Konstruktory i destruktory: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
dodatkowy tekst... |
wreszcie sensowny zalążek :) |
||
Linia 1:
{{podświetl|php}}
<div class="noprint">{{prognav|PHP|Klasy i obiekty|Dziedziczenie}}</div>
== Konstruktory i destruktory ==
Metody klas nie muszą być wywoływane wyłącznie przez programistę tworzącego dany skrypt. Istnieje pewna grupa metod, które są wywoływane automatycznie przez interpreter w momencie zajścia jakiegoś zdarzenia - metody takie nazywamy ''magicznymi'', a w PHP możemy poznać je po tym, że ich nazwy rozpoczynają się od dwóch podkreśleń: '''__'''.
Pierwszymi magicznymi metodami, jakie poznamy, będą ''konstruktor'' i ''destruktor'', wywoływane odpowiednio w momencie tworzenia oraz niszczenia obiektu.
=Konstruktor=▼
▲== Konstruktor ==
Konstruktor jest metodą o nazwie '''__construct()''', która może pobierać parametry, lecz nie wolno jej zwracać wartości. Jej zadaniem jest zainicjowanie nowoutworzonego obiektu. Wracając do przykładu z klasami reprezentującymi osoby, można je przepisać następująco:
<nowiki><?php
class osoba
{
public $nazwisko;
public function __construct
$this->test = $val;▼
{
}▼
$this -> ustawPersonalia($imie, $nazwisko);
} // end __construct();
public function ustawPersonalia($imie, $nazwisko)
{
$this -> nazwisko = $nazwisko;
} // end ustawPersonalia();
public function personalia()
{
return $this -> imie.' '.$this -> nazwisko;
} // end personalia();
▲ }
$osoba = new osoba('Adam', 'Kowalski');
echo $osoba -> personalia();
Teraz personalia osoby możemy ustawić zarówno stosowną metodą, jak i w momencie tworzenia obiektu, ponieważ stworzyliśmy konstruktor, który pobiera imię i nazwisko i kieruje je do metody ''ustawPersonalia()''. Zauważmy, że w takim wypadku przekazujemy te parametry tuż przy nazwie klasy tak, jakby to była funkcja. Jeśli konstruktor nie pobiera żadnych parametrów, możemy (acz nie musimy) pominąć nawiasy:
▲ </nowiki>
<nowiki>// wywołanie konstruktora, który nie pobiera parametrów
=Destruktor=▼
$obiekt = new klasa;
$obiekt = new klasa();</nowiki>
{{Uwaga|W PHP4 metoda konstruktora musiała nazywać się identycznie, jak klasa, tj. jeśli mieliśmy klasę ''osoba'', jej konstruktorem była metoda o nazwie ''osoba''. Dla zachowania kompatybilności, PHP5 wciąż akceptuje takie konstruktory, lecz dopiero w drugiej kolejności, zaś zostanie to usunięte w PHP6.}}
'''Ćwiczenie:''' W poprzednim rozdziale podaliśmy zbudowany na OOP system konfiguracji. Jedną z klas wchodzących do zestawu była ''fileResource''. Dodaj do niej konstruktor, który pobiera nazwę z plikiem konfiguracyjnym tak, aby można go było podać już w momencie tworzenia obiektu. Przerób kod korzystający z tego zestawu klas, aby korzystał z konstruktora.
▲== Destruktor ==
== Zakończenie ==
|