Mam klasy bazowej, które muszę wywoływać funkcje na klasie, która jest przywoływana w klasie potomnej.Uzyskaj statyczne zmienne klasy potomnej z klasy nadrzędnej?
dość łatwe,
class base_class {
public function doSomethingWithReference(){
$this->reference->doSomething();
}
}
class extended_class extends base_class{
protected $reference;
public function __construct($ref){
$this->reference = $ref;
}
}
Teraz to działa prawidłowo oczywiście
Ale kiedy jestem debugowania Nie dbam o wartości $this->reference
ale obiekt, który $this->reference
odnosi się do jest ogromny!
, więc gdy wykonam print_r($instanceOfExtendedClass)
, otrzymam wydruk tego obiektu.
Odwołanie jest teraz różne dla każdej klasy, która rozszerza się o base_class
.
To, co chciałem zrobić, to ustawić jako reference
statyczną właściwość klasy extended_class
.
Ale zmiana doSomethingWithReference
na self::$reference
powoduje zgłoszenie niezdefiniowanego błędu zmiennej.
I odwrotnie ustawienie zmiennej statycznej w base_class
i modyfikowanie jej z extended_class
nie działa, ponieważ zmienia zmienną dla wszystkiego, co rozciąga się od tej klasy.
Czy jest jakiś sposób, aby to zrobić, aby uzyskać wydruk z $this->reference
?
Z jaką wersją PHP pracujesz? Było kilka [* dużych * zmian w "statycznym" zachowaniu w 5.3] (http://php.net/language.oop5.late-static-bindings), a wiedza, czy utkniesz na czymś starszym, da ci bardzo odmienna odpowiedź. – Charles
Wersja PHP 5.3 – Hailwood
Ta struktura klasowa narusza coś, po prostu nie jestem pewna co to jest :) –