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
Il risultato prodotto è questocodice:class ExampleClass { public static function StaticExample(){ echo "StaticExample", " "; } public function InstanceExample(){ echo "InstanceExample", " "; } } $test = new ExampleClass(); ExampleClass::StaticExample(); $test->InstanceExample(); $test->StaticExample(); exit();
... ma cosa diavolo ci fa quel metodo nella mia istanza?codice:StaticExample InstanceExample StaticExample
Forte della mia certezza, vado a fare un paragone con C# (Console Application)
Cioè ... non è nemmeno possibile decommentare quella linea perchè il parser si accorge immediatamente che si è commesso un errore ... qualcuno ha dei lumi?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(); } } }


Rispondi quotando