Načrtovanje in razvoj spletnih aplikacij

Dedovanje v PHP

Dedovanje omogoča izpeljevanje razredov iz obstoječih rezredov. Nov razred deduje vse obstoječe metode in lastnosti. V PHP za dedovanje uporabimo rezervirano besedo extends.


<?php
   class Avto {
      protected $model; // zaščiteno!
      function setModel($model) { $this->model = $model; }
      function getModel() { return $this->model; }
   };
    
   class Tip extends Avto {
      public $proizvajalec; // ker je lastnost public, lahko do nje dostopamo kjerkoli!
      function izpis() { echo $this->proizvajalec . " " . $this->model . "<br />"; }
   };
    
   $a4quattro = new Tip();
   $a4quattro->setModel("A4 Quattro");
   $a4quattro->proizvajalec = "Audi";
   $golf = new Tip();
   $golf->setModel("Golf");
   $golf->proizvajalec = "VW";
    
   $a4quattro->izpis();
   $golf->izpis();
?>
Audi A4 Quattro
VW Golf

V novih razredih se kontruktor in destruktor dedovanih razredov NE kliče samodejno, treba jih je poklicati ročno z parent::__construct() oz. parent::__destruct().

<?php
   class Avto {
      private $model; // privatno!
      function __construct($model) { $this->model = $model; } //konstruktor
      function setModel($model) { $this->model = $model; }
      function getModel() { return $this->model; }
   };
  
   class Tip extends Avto {
      public $proizvajelc; // ker je lastnost public, lahko do nje dostopamo kjerkoli!
      function __construct($model,$proizvajalec) {
          parent::__construct($model);
          $this->proizvajalec = $proizvajalec;
      }
      function izpis() { echo $this->proizvajalec . " " . $this->getModel() . "<br />"; }
   };
  
   $a4quattro = new Tip('A4 Quattro', 'Audi');
   $golf = new Tip('Golf', 'VW');
  
   $a4quattro->izpis();
   $golf->izpis();
?>
A4 Quattro
Golf