ok Ho questo codice, che sto studiandostatici e non statici Chiamata in PHP
class scope{
function printme(){
return "hello";
}
public static function printme(){
return "hello";
}
}
$s = new scope();
echo $s->printme(); //non-static call
echo "<br>";
echo scope::printme(); //static call
Ora, questo non è davvero il codice del mio progetto, ma queste sono le cose che voglio fare
- Voglio creare una classe che conterrà funzioni statiche e non statiche.
- Desidero che una funzione sia disponibile sia su chiamate statiche che non statiche.
Poiché la funzione non statica ha un sacco di operazioni su di esso, devo anche chiamarla come una funzione statica in modo che non avrò bisogno di istanziare la classe. È possibile? o avevo davvero bisogno di riscrivere la funzione su un'altra funzione o classe?
NOTA: dimmi se sto già programmando male.
Ma se chiamo metodo non statico dal metodo statico usando self :: funziona. perché? –
Php ti ha permesso di farlo non significa che dovresti farlo. self :: funziona perché il tuo metodo non statico non usa $ this, se usi $ this all'interno, non dovrebbe funzionare. – xdazz
@RNKushwaha Se si chiama il metodo non statico dal metodo statico, se il metodo non statico utilizza $ this, 'Errore irreversibile: Errore non rilevato: l'utilizzo di $ this quando non nel contesto dell'oggetto' avverrà, se il metodo non statico non lo fa non usando $ this, 'PHP deprecato: il metodo non statico test :: foo() non dovrebbe essere chiamato staticamente' accadrà. – xdazz