Ich weiß, das ist super-alt, aber falls irgendjemand sonst eine Ahnung braucht ...
Haben Sie überlegt, statische Variablen zu verwenden?
Das PHP-OOP-Entwurfsmuster ist so, dass statisch Variablen in einer Klasse Mutter erklärt bleiben gleich in der Kind Klasse auch.
Zum Beispiel ...
<?php
class A {
public static $test = 'a';
public function test() {
echo 'Test is: '.self::$test;
}
}
class B extends A {
public static $test = 'b';
}
$obj = new B;
$obj->test();
?>
Ausführen dieses Code (auf PHP 5.3- Ich bin sicher, dass es auch für andere Versionen ist auch) geben Sie das folgende Ergebnis:
-Test ist: ein
Von was ich in Ihrem OP sammeln konnte, suchen Sie nach einer Möglichkeit für die Elternklasse Variablen bleiben - auch in erweiterten Klassen. Dies löst dieses Problem.
Um die Variablen öffentlich außerhalb des Klassenbereiches zu nennen (also dort, wo werden Sie normalerweise schreiben obj- $> Vars), müssen Sie eine Funktion in der übergeordneten Klasse erstellen, die self::$variable_name
so dass es Referenzen kann Werfen Sie diese Variable zurück auf den Code, der entweder diese Klasse oder eine andere Klasse verwendet, die sie erweitert.
Zum Beispiel so etwas wie:
public function get_variable() {
return self::$variable;
}
Sie könnten auch eine magische Methode erstellen, die self :: $ Variable dynamisch zurückwerfen würde auf, was Sie fragen die Instanz für - also ein Verfahren oder eine Variable . Sie könnten den Code verdrahten, um die self :: $ Variable in jedem Fall zurück zu werfen.
Lesen Sie http://php.net/manual/en/language.oop5.magic.php für weitere Informationen über die verschiedenen magischen Methoden, mit denen Sie diese Art von Sachen machen können.
Das OP war ein wenig kryptisch, also war ich mir nicht sicher, ob das genau das ist, was du wolltest, aber ich habe niemanden gesehen, der hier statische Variablen anspricht.
ich nicht bekommen, ist es leicht möglich sein. Ich wäre mehr als glücklich, Ihre Frage zu beantworten, aber es ist nicht klar genug. Möchten Sie "erweitert" wie ($ obj = new Extended ($ main)) konstruieren oder suchen Sie statische Vars? – nlaq