search icon

__construct i sub-classes . PHP

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!

Skriv et svar

Verified by MonsterInsights