&reftitle.examples;
W tym przykładzie najpierw zdefiniujemy bazową klasę i jej
rozszerzenie. Klasa bazowa opisuje ogólne warzywo,
czy jest jadalne oraz jego kolor. Podklasa Szpinak
dodaje metodę pozwalającą go ugotować, i drugą, która pozwala
dowiedzieć się, czy jest ugotowany.
Definicje klasy
Warzywo
jadalne = $jadalne;
$this->kolor = $kolor;
}
public function czyJadalne()
{
return $this->jadalne;
}
public function pobierzKolor()
{
return $this->kolor;
}
}
?>
]]>
Szpinak
Warzywo(true, "zielone");
}
public function ugotuj()
{
$this->ugotowane = true;
}
function czyUgotowane()
{
return $this->ugotowane;
}
}
?>
]]>
Teraz możemy stworzyć dwa egzemplarze tych klas i wydrukować
informacje o nich, włączając w to informacje o przodkach.
Zdefiniujemy także kilka użytecznych funkcji, głównie po to,
by uzyskać ładny wydruk zmiennych.
test_script.php
$wart) {
echo "\t$wlasc = $wart\n";
}
}
function drukujMetody($obj)
{
$tab = get_class_methods(get_class($obj));
foreach ($tab as $metoda) {
echo "\tfunkcja $metoda()\n";
}
}
function przodkowieKlasy($obj, $klasa)
{
if (is_subclass_of($obj, $klasa)) {
echo "Obiekt należy do klasy " . get_class($obj);
echo ", a subclass of $klasa\n";
} else {
echo "Obiekt nie należy do podklasy $klasa\n";
}
}
// tworzymy 2 egzemplarze obiektów
$warzywko = new Warzywo(true, "niebieski");
$lisciaste = new Szpinak();
// wydrukujemy informację o obiektach
echo "warzywko: KLASA " . get_class($warzywko) . "\n";
echo "lisciaste: KLASA " . get_class($lisciaste);
echo ", PRZODEK " . get_parent_class($lisciaste) . "\n";
// pokażmy właściwości warzywka
echo "\nwarzywko: Właściwości\n";
drukujWlasciwosci($warzywko);
// i metody liściastego
echo "\nliściaste: Metody\n";
drukujMetody($lisciaste);
echo "\nPrzodkowie:\n";
przodkowieKlasy($lisciaste, Szpinak::class);
przodkowieKlasy($lisciaste, Warzywo::class);
?>
]]>
&examples.outputs;
Wartą odnotowania rzeczą w powyższym przykładzie jest to,
że obiekt $lisciaste jest egzemplarzem klasy
Szpinak która to jest podklasą klasy
Warzywo, i tak ostatnia część powyższego
skryptu pokaże na wyjściu: