Mam następujący kod:PHP niewłaściwy kod działa poprawnie
class A {
public function methodB()
{
// do something
return 1;
}
}
$a = A::methodB();
To nigdy nie powinno pracować i działa na tej maszynie! Powraca 1. Naprawdę, przysięgam, że nie jestem pijany.
Oczywiście, jeśli uruchomię go na moim komputerze lub serwerze produkcyjnym, nie będzie działać. Ponieważ nie można wywoływać metod niestacjonarnych, takich jak statyczne. Klasa powinna być zawsze tworzona z instancji.
Martwiłem się tym. Pomyślałem dzisiaj, że kiedy utworzę oddzielną maszynę roboczą do testowania projektu, znowu mam środowisko, w którym działa ten kod.
Sytuacja się pogarsza - mam programistów w zespole, którzy wciąż nie dostrzegają wyraźnej różnicy między metodami statycznymi i niestatycznymi. W rezultacie mają kod, który działa dobrze na ich komputerze, ale zawiedzie w innych środowiskach.
DLACZEGO to działa? Chcę, żeby taki kod zawodził. To nie powinno działać.
Konfiguracja komputera, na którym to działa jest następujący:
włóczęga @ włóczęga-ubuntu-wierny-32:/var/www/Apotheke $ php -v PHP 5.6.17-3 + deb. sury.org ~ trusty + 1 (cli) Copyright (c) 1997-2015 Grupa PHP Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies z Zend OPcache v7.0.6-dev, Copyright (c) 1999 -2015, przez Zend Technologies
Naprawdę, czuję się tak głupio. Czy coś mi brakuje?
Zaznacz to: - http://stackoverflow.com/questions/3754786/calling-non-static-method-with –
Dopóki nie użyjesz '$ this', możesz uciec z tym kodem w PHP –
Chcę, żeby to się nie udawało ...... (sprawdzanie dokumentów, musi być jakieś ustawienie, żeby zawieść, mam nadzieję) – Tebe