C'era una domanda interessante in una prova pratica a cui non ho capito la risposta. Qual è l'output del seguente codice:Chiamare il metodo statico dalla Classe B (che estende la Classe A) della Classe A
<?php
class Foo {
public $name = 'Andrew';
public function getName() {
echo $this->name;
}
}
class Bar extends Foo {
public $name = 'John';
public function getName() {
Foo::getName();
}
}
$a = new Bar;
$a->getName();
?>
Inizialmente, ho pensato che questo era produrre un errore perché i metodi statici non possono fare riferimento a $ this (almeno in PHP5). L'ho testato io stesso e in realtà esce su John.
Ho aggiunto Foo :: getName(); alla fine della sceneggiatura e ho ricevuto l'errore che mi aspettavo. Quindi, cosa cambia quando chiami un metodo statico all'interno di una classe che estende la classe da cui stai chiamando?
Qualcuno dispiacerebbe spiegare dettagliatamente cosa sta succedendo qui?
C'è un super :: simbolo in PHP? L'unico a cui riesco a pensare è genitore :: per le classi statiche. –
super non sembra funzionare, padre lo fa. – notruthless
hai ragione, mi sono confuso – Ulf