logo

Konstruktory i destruktory w PHP

Konstruktor jest to specjalna metoda w strukturze klasy, która jest wykonywana podczas tworzenia obiektu tej klasy.

To najlepsze miejsce aby wykonać cały inicjujący kod, w tym przypisanie wartości domyślnych do pól.

Składnia

class Nazwa_klasy
{
function __construct(argument1, argument2, ...)
{
//kod konstruktora
}
//inne składowe klasy
}

Argumenty w funkcji konstruktora są opcjonalne. Jeżeli je jednak zaimplementujemy, przy tworzeniu obiektu musimy je podać: $obiekt = new Nazwa_klasy(argumenty);

Nazwa funkcji "__construct" informuje PHP, że dana funkcja jest konstruktorem (Uwaga! w nazwie są dwa podkreślenia, a nie jedno). Wcześniej (w wersji PHP 4) konstruktorem była metoda o nazwie takiej samej, jak nazwa klasy.

Destruktor jest to specjalna metoda w strukturze klasy, która jest wykonywana podczas usuwania z pamięci obiektu tej klasy.

To najlepsze miejsce aby wykonać cały kod, który zwalnia zasoby systemowe, wykorzystywane przez metody danej klasy.

Destruktory są rzadziej wykorzystywane.

Składnia

class Nazwa_klasy
{
function __destruct()
{
//kod destruktora
}
//inne składowe klasy
}

Czas na przykład

Przykład 1

<?php
class Konto
{
private $stan;
function __construct($s)
{
$this->stan = $s;
}
public function setStan($wartosc)
{
$this->stan = $wartosc;
}
public function getStan()
{
return $this->stan;
}
}
$konto1 = new Konto(1000);
echo 'Stan: '.$konto1->getStan().' PLN<br>'; ?>

Użyliśmy konstruktora klasy, w którym przypisujemy do konta kwotę podaną przy tworzeniu obiektu jako argument.





© medianauka.pl, 2021-11-28, ART-4287





Polecamy w naszym sklepie

30 sekund O sztucznej inteligencji i robotyce
Matematyka konkretna
Mapa świata Puzzle
laboratorium w szufladzie Modelarstwo i robotyka
Kolorowe skarpetki - football piłka nożna
Niektóre treści nie są dostosowane do Twojego profilu. Jeżeli jesteś pełnoletni możesz wyrazić zgodę na przetwarzanie swoich danych osobowych. W ten sposób będziesz miał także wpływ na rozwój naszego serwisu.
© ® Media Nauka 2008-2022 r.