Se estendo una classe statica in PHP, e la classe padre si riferisce a “self ::”, sarà questo riferimento al sé nella classe estesa?
Domanda
Se estendo una classe statica in PHP, e la classe padre si riferisce a "self ::", sarà questo riferimento al sé nella classe estesa?
Quindi, per esempio
<?php
Class A
{
static $var
public static function guess(){self::$var = rand(); return $var}
}
Class B extends Class A
{
public static function getVar(){return self::$var}
}
Se ho eseguito B :: congettura (); poi B :: getVar ();
è il rapporto qualità-Var memorizzato in A :: $ var o B :: $ var?
Grazie.
Soluzione
E 'facile prova:
class ClassA {
public static function test(){ self::getVar(); }
public static function getVar(){ echo 'A'; }
}
class ClassB extends ClassA {
public static function getVar(){ echo 'B'; }
}
ClassA::test(); // prints 'A'
ClassB::test(); // also prints 'A'
... speranza che aiuta:)
Altri suggerimenti
tardo statica vincolante è stato introdotto in PHP 5.3 , che permette di controllare questo comportamento.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow