I en sub-class er det muligt at overskrive metoder fra en super-class. Dette gøres ved at oprette en metode med samme navn i en sub-class. I eksemplet her under bliver metoden write_hello ændret i klassen HelloYou.
<?php
class MyClass {
protected function write_hello(){
echo "Hello World!";
}
}
class HelloYou extends MyClass {
protected function write_hello(){
echo "Hello You!";
}
}
Dette giver en udfordring, hvis man bruger en constructor i både en Super-Class og i klasser, der er nedarvet der fra. En constructor oprettes på samme måde som en function, så derfor bliver den overskrevet, hvis man opretter en constructor begge steder.
<?php
class MyClass {
protected function __construct(){
echo "Hello World!";
}
}
class HelloYou extends MyClass {
protected function __construct(){
echo "Hello You!";
}
}
Parent
Dette kan løses ved at bruge parent i sub-klassen. På den måde køres Super-klassens constructor i sub-klassen.
<?php
class MyClass {
protected function __construct(){
echo "Hello World!";
}
}
class HelloYou extends MyClass {
protected function __construct(){
//Her køres super-klassens constructor
parent::__construct();
echo "Hello You!";
}
}
I eksemplet ovenfor vil der, når et objekt instantieres, først blive udskrevet Hello World! og der næst Hello You!