un esempio spicciolo di classe estesa in php4
codice:
<?php
// classe da estendere
class MyClass {
// variabile pubblica, ereditata in automatico
var $public = 'test';
// costruttore pubblico, ereditato in automatico
function MyClass() {
echo 'MyClass';
}
// funzioni pubbliche, ereditate in automatico
function myFunction() {
echo '
MyClass->myFunction()';
}
function myOtherFunction() {
echo '
MyClass->myOtherFunction()';
}
function myChangedFunction() {
echo '
MyClass->myChangedFunction()';
}
}
// classe estesa
class MySubClass extends MyClass {
// costruttore ereditato in automatico ma voglio cambiarlo ...
// ecco un override del costruttore
function MySubClass() {
// voglio comunque usare il costruttore della classe genitore
parent::MyClass();
// .. escrivere altro
echo '
MySubClass';
// variabile pubblica non dichiarata, ereditata in automatico
echo '
'.$this->public;
}
// override del metodo myFunction
function myFunction() {
echo '
MySubClass->myFunction()';
}
// override del metodo myFunction
// con chiamata al metodo del genitore
function myChangedFunction() {
parent::myChangedFunction();
echo '
MySubClass->myChangedFunction()';
}
// e myOtherFunction ? ... ereditata in automatico
}
// istanzio la classe estesa
$msc = new MySubClass();
// richiamo il metodo sovrascritto
$msc->myFunction();
// richiamo il metodo ereditato in automatico
$msc->myOtherFunction();
// richiamo il metodo sovrascritto che richiama il metodo ereditato
$msc->myChangedFunction();
/** OUTPUT
MyClass
MySubClass
test
MySubClass->myFunction()
MyClass->myOtherFunction()
MyClass->myChangedFunction()
MySubClass->myChangedFunction()
*/
?>