Dziedziczenie to jeden z podstawowych mechanizmów programowania obiektowego. Polega na tym, że dana klasa – bazowa może dzielić się z innymi klasami – potomnymi swoimi funkcjonalnościami, tj.: metodami i właściwościami. Klasa potomna może dziedziczyć tylko jedną klasę bazową. Do połączenia klas używa się słowa kluczowego extends.
1 2 3 |
class ChildClass extends BaseClass { // ... } |
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php // Product.php class Product { public function id($number) { echo 'ID: '.$number.'<br />'; } public function name($name) { echo 'Product Name: '.$name.'<br />'; } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php // Category.php include 'Product.php'; class Categories extends Product { public function category($name) { echo 'Category Name: '.$name.'<br />'; } } $product = new Categories(); $product->id(1); $product->name('PHP OOP'); $product->category('Books'); ?> |
Klasa Categories rozszerza funkcjonalności klasy bazowej Product. Tworząc instancję obiektu new Categories() jednocześnie mamy dostęp do funkcji id() i name() z klasy Product. Zaleta jest oczywista; nie musimy powielać tych samych funkcjonalności w różnych klasach. Wystarczy dołączyć klasę, która posiada użyteczne dla nas funkcje i/lub właściwości.