Raga è normale che con questo codice riscontro le seguenti anomalie:

Codice PHP:
class A
{
    public static function 
func1()
    {
        print 
$this->func2() . "
"
;
        print 
self::func2() . "
"
;
        print 
A::func2() . "
"
;
    }
    
    public function 
func2()
    {
        return 
"func2";
    }
}

print 
A::func1(); 
l'output è:
Fatal error: Using $this when not in object context
func2
func2
Fino al primo "fatal error" tutto ok, sto cercando di utilizzare $this all'interno di un contesto statico dove oltretutto la classe A non è stata istanziata.

Ma le altre due chiamate di "func2()" funzionano perfettamente....come mai? Io sto richiamando da una funzione statica, senza istanziare l'oggetto, una funzione non statica (che quindi non dovrebbe essere raggiungibile)...ed il tutto senza errori?!?

Cosa mi sfugge? Come gestisce PHP queste situazioni?

La mia versione di PHP è la 5.2.6