ho il seguente codice:PHP codice errato funziona bene
class A {
public function methodB()
{
// do something
return 1;
}
}
$a = A::methodB();
Non dovrebbe mai lavorare e funziona su quella macchina! Ritorna 1. Davvero, giuro che non sono ubriaco.
Ovviamente se lo eseguo sulla mia macchina o sul server di produzione non funzionerà. Perché non è possibile chiamare metodi non statici come statici. La classe dovrebbe sempre essere istanziata all'inizio.
Ero preoccupato per questo. Pensato oggi quando ho installato una macchina da lavoro separata per testare il progetto, ho avuto di nuovo l'ambiente in cui funziona questo codice.
Le cose peggiorano: ho sviluppatori in team che ancora non ottengono chiaramente la differenza tra metodi statici e non statici. Come risultato hanno il codice che funziona bene sulla loro macchina ma non funziona su nessun altro ambiente.
PERCHÉ funziona? Voglio che un tale codice fallisca. Non dovrebbe funzionare.
La configurazione della macchina in cui funziona è la seguente:
vagabondo @ vagabondo-ubuntu-fidato-32:/var/www/Apotheke $ php -v PHP 5.6.17-3 + deb. sury.org ~ trusty + 1 (cli) Copyright (c) 1997-2015 Il gruppo PHP Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies con Zend OPcache v7.0.6-dev, Copyright (c) 1999 -2015, di Zend Technologies
Davvero, mi sento così stupido. Mi manca qualcosa?
Controlla questo: - http://stackoverflow.com/questions/3754786/calling-non-static-method-with –
Finché non usi '$ this', puoi farla franca con questo codice PHP –
Voglio che fallisca ...... (controllando i documenti, ci deve essere qualche settaggio per farlo fallire spero) – Tebe