Ecco la documentazione da static
parola chiave PHP.net:Perché le proprietà statiche non sono accessibili da "->" ma accessibili da "::"?
una proprietà dichiarata come statica non è possibile accedere con un oggetto di classe istanziata (anche se un metodo statico può).
Quindi perché funziona il seguente codice?
Ecco il loro codice di esempio (ho accorciarla):
<?php
class Foo
{
public static $my_static = 'foo';
}
$foo= new Foo();
print $foo::$my_static; //print 'foo'
?>
Perché $foo::$my_static still
opere qui? Grazie a tutti!
Hai attivato 'error_reporting()'? Hai ricevuto avvisi o notifiche? La pagina web annota quanto segue: 'Attenzione: In PHP 5, la chiamata di metodi non statici genera staticamente un avviso di livello E_STRICT. Potrebbe essere correlato. Quale versione di PHP stai usando? –
Nessun esempio è letteralmente dal manuale PHP. L'ho appena accorciato un po '. Nessun avviso o avviso di sicuro. E io uso il 5.5 –
Prova ad usare $ foo-> my_static o fai una funzione all'interno della classe foo che usa $ this-> my_static e vedrai l'avviso. Non è possibile utilizzarlo all'interno dell'oggetto della classe istanziata. – kainaw