In dit voorbeeld definiëren we een basis klasse en een
uitbreiding daarop. De basis klasse Groente
beschrijft een groente; of deze eetbaar is en wat
zijn kleur is. De subklasse Spinazie
voegt
een methode toe om deze groente te koken en om er achter te komen
of deze reeds gekookt is.
Voorbeeld 1. klassen.inc
<?php /* Basis klasse met eigenschappen en methoden */ class Groente {
var $eetbaar; var $kleur;
function Groente( $eetbaar, $kleur="groen" ) { $this->eetbaar = $eetbaar; $this->kleur = $kleur; }
function is_eetbaar() { return $this->eetbaar; }
function welke_kleur() { return $this->kleur; } } /* Einde van klasse Groente */
/* De klasse Spinazie breidt de basis klasse uit. */ class Spinazie extends Groente {
var $gekookt = false;
function Spinazie() { $this->Groente( true, "groen" ); }
function koken() { $this->gekookt = true; }
function is_gekookt() { return $this->gekookt; } } /* Einde van klasse Spinazie */
?>
|
|
Vervolgens instantiëren we 2 objecten van deze klassen en
geven wat informatie over hun weer, waaronder hun ouderschap.
We definiëren ook wat handige functies, maar deze dienen enkel
om de informatie mooi weer te geven.
Voorbeeld 2. test_script.php
<pre> <?php
include "klassen.inc";
/* Handige functies */
function print_vars($obj) { $eigenschappen = get_object_vars($obj); while (list($eigenschap, $waarde) = each($eigenschappen)) echo "\t$eigenschap = $waarde\n"; }
function print_methoden($obj) { $methoden = get_class_methods(get_class($obj)); foreach ($methoden as $methode_naam) echo "\tfunction $methode_naam()\n"; }
function klasse_ouderschap($obj, $klasse) { global $$obj; if (is_subklasse_of($$obj, $klasse)) { echo "Object $obj behoort toe klasse ".get_class($$obj); echo " een subklasse van $klasse\n"; } else { echo "Object $obj behoort niet tot een subklasse van $klasse\n"; } }
// Maak 2 objecten
$groente = new Groente(true,"blauw"); $blaadje = new Spinazie();
// Geef informatie over de objecten weer. echo "\$groente: KLASSE " . get_class($groente) . "\n"; echo "\$blaadje: KLASSE " . get_class($blaadje) . "\n"; echo ", OUDER " . get_parent_class($blaadje) . "\n";
// Geef eigenschappen van $groente weer echo "\n\$groente: Eigenschappen\n"; print_vars($groete);
// Geef de namen van de methoden van $groente weer echo "\nblaadje: Methoden\n"; print_methoden($blaadje);
echo "\nOuderschap:\n"; klasse_ouderschap('blaadje', 'Spinazie'); klasse_ouderschap('blaady', 'Groente'); ?> </pre>
|
|
Het is belangrijk om te onthouden dat in bovenstaand
voorbeeld, het object $blaadje
een
instantie is van de klasse Spinazie welke
een subklasse van Groente is. Daarom
zal het script de volgende output geven: