Tutto orgoglione di aver trovato un modo per fare override di un metodo statico di una qualsiasi classe in PHP, sono incappato in un orrore logico non da poco ... e vorrei chiedervi un'opinione in merito.

Un metodo statico è per definizione raggiungibile (utilizzabile) tramiteil nome della classe.
Un metodo statico a sua volta non può sfruttare un referente $this poichè non essendo parte dell'istanza ma della classe non ha alcuna istanza di riferimento (il $this, per l'appunto).

Ora, osservate questo codice
codice:
class ExampleClass {
	public static function StaticExample(){
		echo "StaticExample", "
";
	}
	public function InstanceExample(){
		echo "InstanceExample", "
";
	}
}

$test = new ExampleClass();
ExampleClass::StaticExample();
$test->InstanceExample();
$test->StaticExample();
exit();
Il risultato prodotto è questo
codice:
StaticExample
InstanceExample
StaticExample
... ma cosa diavolo ci fa quel metodo nella mia istanza?

Forte della mia certezza, vado a fare un paragone con C# (Console Application)
codice:
using System;
namespace ConsoleApplication1 {

	public class ExampleClass {
		public static void StaticExample() {
			Console.WriteLine("StaticExample");
		}

		public void InstanceExample() {
			Console.WriteLine("InstanceExample");
		}
	}

	class Program {
		static void Main(string[] args) {
			ExampleClass test = new ExampleClass();
			ExampleClass.StaticExample();
			test.InstanceExample();
			//test.StaticExample();
			Console.ReadLine();
		}
	}
}
Cioè ... non è nemmeno possibile decommentare quella linea perchè il parser si accorge immediatamente che si è commesso un errore ... qualcuno ha dei lumi?