Hallo,
ich hab eine "Hauptklasse" (core.class.php) und eine "Unterklasse" (subcore.class.php).
Ich weise im Konstruktur der "Hauptklasse" einer Variable ($strContent) einen Wert zu und will diesen Wert mit einer Methode der "Unterklasse" ausgeben.
Hier mal der Beispiel-Code: (Zum Problem komm ich nach dem Code...)
index.php
core.class.php
subcore.class.php
Also, um Zugriff aus der "Unterklasse" auf die Variable "$strContent" aus der "Hauptklasse" zu haben, muss ich im Konstruktor der "Unterklasse" ein
einfügen.
So jetzt zum Problem!
Nehmen wir mal an, das Projekt ist sehr groß und der Konstruktor der "Hauptklasse" übernimmt Aufgaben wie:
- Verbindung mit der MySQL-Datenbank
- Liest Konfig-Dateien ein
- usw.
Jetzt brauch ich aber auch eine MySQL-Verbindung in der "Unterklasse" und würde gern die Verbindung nehmen die mit dem Konstruktor der "Hauptklasse" erstellt wurde.
Das Problem ist, das durch
der Konstruktor der "Hauptklasse" 2x mal aufgerufen wird, und 2 mal eine MySQL-Verbindung hergestellt wird. Was natürlich aus Performance-Gründen unakzeptabel ist, vorallem wenns es noch 10 weitere "Unterklassen" gibt.
Ich dachte mir, setzt du in der "Hauptklasse" im Konstruktor einfach eine If-Abfrage ob die Variable schon ein Wert zugewiesen wurde, und wenn ja, dann mach nix und weis es eben nicht nochmal zu.
Aber leider geht, das auch nicht, da der Konstruktor der Hauptklasse nach dem parent::__construct(); scheinbar die Variable nicht kennt.
Also, kennt jemand eine Möglichkeit, die Instanz aus der "Hauptklasse" an die "Unterklasse" weiterzureichen, ohne jedes mal den Konstruktor der "Hauptklasse" wieder aufrufen zu müssen?
Danke!
ich hab eine "Hauptklasse" (core.class.php) und eine "Unterklasse" (subcore.class.php).
Ich weise im Konstruktur der "Hauptklasse" einer Variable ($strContent) einen Wert zu und will diesen Wert mit einer Methode der "Unterklasse" ausgeben.
Hier mal der Beispiel-Code: (Zum Problem komm ich nach dem Code...)
index.php
PHP-Code:
<?php
include('core.class.php');
include('subcore.class.php');
$core = new core();
$subcore = new subcore();
echo $subcore->getContent();
?>
PHP-Code:
<?php
class core
{
protected $strContent = NULL;
function __construct()
{
$this->strContent = 'Führe aus<br />';
}
}
?>
PHP-Code:
<?php
class subcore extends core
{
function __construct()
{
parent::__construct();
}
public function getContent()
{
return $this->strContent;
}
}
?>
PHP-Code:
parent::__construct();
So jetzt zum Problem!
Nehmen wir mal an, das Projekt ist sehr groß und der Konstruktor der "Hauptklasse" übernimmt Aufgaben wie:
- Verbindung mit der MySQL-Datenbank
- Liest Konfig-Dateien ein
- usw.
Jetzt brauch ich aber auch eine MySQL-Verbindung in der "Unterklasse" und würde gern die Verbindung nehmen die mit dem Konstruktor der "Hauptklasse" erstellt wurde.
Das Problem ist, das durch
PHP-Code:
parent::__construct();
Ich dachte mir, setzt du in der "Hauptklasse" im Konstruktor einfach eine If-Abfrage ob die Variable schon ein Wert zugewiesen wurde, und wenn ja, dann mach nix und weis es eben nicht nochmal zu.
Aber leider geht, das auch nicht, da der Konstruktor der Hauptklasse nach dem parent::__construct(); scheinbar die Variable nicht kennt.
Also, kennt jemand eine Möglichkeit, die Instanz aus der "Hauptklasse" an die "Unterklasse" weiterzureichen, ohne jedes mal den Konstruktor der "Hauptklasse" wieder aufrufen zu müssen?
Danke!
Kommentar