2016-07-26 3 views
1

ich eine Hauptklasse haben in index.php:Verwendung sind in der Klasse richtig

class myClass { 

    public function lorem() { 
     include_once 'extendClass.php'; 
    } 

    public function __construct() { 
     $this->lorem(); 
    } 

} 

// run class 
new extendClass(); 

Ich muss include_once 'extendClass.php' innerhalb der lorem() Funktion.

In meiner extendClass.php Datei, erweitere ich die Klassenfunktion mit:

class extendClass extends myClass { 

    public function lorem(){ 
     echo "foo bar"; 
     parent::lorem(); 

    } 

} 

Wenn ich new extendClass() in index.php verwenden, erhalte ich einen Fehler, da die include_once() nicht ausgelöst wird. Was ist die Lösung für dieses Puzzle?

Hinweis: include_once() muss innerhalb myClass liegen.

+0

können nicht verschachtelt Klasse Erklärungen. – Rizier123

+0

@ Rizier123 Ist meine einzige Option, zwei völlig separate Klassen in diesem Fall zu machen? Bitte erläutern. –

+0

Ja. Wie soll diese verschachtelte Klasse überhaupt von einer noch nicht definierten Klasse ausgehen können? Sie wollen es wahrscheinlich darunter definieren. – Rizier123

Antwort

3

Es gibt zwei Probleme

  1. Sie sind ein Kind der Klasse erstellen, die die lorem() Funktion ist überschrieben werden. Sie müßten ausdrücklich parent::lorem() anrufen, um es
  2. Selbst zu erhalten, wenn Sie es nennen, dass übergeordnete Funktion die include tun bedeutet, dass in dieser Funktion definiert ist alles lokal zu dieser Funktion scoped. Das heißt also, dass Ihr Kind Funktion nicht erben kann (zumindest nicht ohne irgendeine Art von return Erklärung)

Sie müssen die außerhalb der Klassendeklaration bewegen umfassen

include_once 'extendClass.php'; 
class myClass { 

    public function lorem() { 
    } 

    public function __construct() { 
     $this->lorem(); 
    } 

} 

// run class 
new extendClass(); 
Verwandte Themen