grennfoxMedlem sedan feb. 2010191 inlägg Hallå
Jag håller på att försöka lära mig det här med class extends, men har kört fast lite här nu.
Så om jag har en kod som ser ut som följande:
page.php
class Page{
protected $hello
function __construct(){
$this->hello = 'hello';
}
}
view.php
class View extends Page{
function __construct(){
echo $this->hello;
}
}
När den här koden körs så händer ingenting, men jag läste något om att om man har en __construct i en klass som ärver så måste man även köra parent:: __construct eller något liknande för att kunna komma åt variabel i huvud klassen.
Men det som ställer till det i mitt huvud är att den klassen körs redan från en annan sida. Blir det inte någon krock då?
Skulle någon vänlig själ vilja förklara detta för mig?
Tackar så mycket på förhand :)
cascaMedlem sedan feb. 20003 262 inlägg __construct() är PHP klass-konstruktor, dvs. den funktion som alltid körs när du skapar ett nytt objekt av klassen. Men om du inte skapar en konstruktor så skapas ju ändå objektet! Det är för att du genom att skapa din egen explicita konstruktor själv definierar hur du vill initiera objekt.'
"Extends" är PHPs nyckelord för att ärva, så i din definition säger du "View ärver Page och alla dess metoder och variabler", men konstruktorn är fortfarande explicit satt eftersom du definierar en sådan metod.
"parent::" betyder att du vill accessa "förälderns", dvs. klassen du ärvers, metod, och i detta fall innebär det att du begär att köra Pages konstruktor. Därför skrivs inget ut om du inte anropar parent::__construct().
grennfoxMedlem sedan feb. 2010191 inlägg aha då blev jag lite klokare :) Tackar så mycket för ett snabbt och bra svar :)