Na początku marca 2012 wydano nową wersję 5.4 języka PHP. Nowa wersja wprowadza wiele udogodnień oraz kilka nowinek do gramatyki. Na przykład możliwość używania operatora tablicowego za operatorem funkcji $obiekt->funkcja()[4]; , składni $klasa::funkcja(). Jako zupełna nowość pojawiły się długo oczekiwane cechy (ang. traits). Niestety ze względu na porzucenie części kompatybilności wstecznej niektóre skrypty/programy pisane pod 5.3 mogą przestać działać. Na taki problem napotkałem się po aktualizacji oprogramowania przez pewnego administratora, który nie informując nikogo a swoim zamiarze nagle zmienił na serwerze dedykowanym wersję PHP z gałęzi 5.3.x na 5.4.x.
Problem dotyczył konkretnie framework'a Kohana 2.3.4. Zdaję sobie sprawę, że framework ten był pisany z myślą o PHP 5.2 jednak pod 5.3 wszystko działało jak dawniej. Po kilku godzinach ciężkich prób i walki na podstawie informacji znalezionych na forum debiana udało się wprowadzić stosowną poprawkę do kodu.
Co ciekawe - na podstawie testów (co potem znalazło potwierdzenie w wyżej wymienionym poście na forum) wynika, że funkcja ob_end_clean() działa delikatnie inaczej niż w poprzednich wersjach. Żeby było śmieszniej dokumentacja PHP nie wspomina na ten temat ani słowem. Również detal ten nie jest wymieniony na liście zmian, które powodują brak kompatybilności wstecznej tej wersji w porównaniu do poprzednich wydań. Zresztą jak widać w changelog'u zmian tych jest całkiem sporo.
Na kolejne wydania PHP czeka się całkiem długo a zmiana drugiego numerka powoduje w skrajnym przypadku zatrzymanie pracy skryptów, czego efektem jest biała strona (specyficzny przypadek dla funkcji pracującej na buforze wyjścia). Zdecydowanie bardziej intuicyjny wydaje mi się cykl wydań Python'a w którym to nawet wersja 2.7 była kompatybilna wstecz w ramach całej gałęzi 2.x. Python do tego jest w mojej ocenie językiem dużo bardziej zaawansowanym w rozwoju i dużo szybciej się rozwijającym. Mimo tego udaje się jego twórcom zachować kompatybilność wsteczną projektów.
Poza tym podobny problem dotyczy samego framework'a Kohana i jego gałęzi 3.x gdzie to przy kolejnych wydaniach twórcy aplikacji opartych na tym framework'u nie mogą aktualizować systemu ze względu na brak wstecznej zgodności.
Artykuł udostępniany na licencji CC-BY-SA-3.0
Problem dotyczył konkretnie framework'a Kohana 2.3.4. Zdaję sobie sprawę, że framework ten był pisany z myślą o PHP 5.2 jednak pod 5.3 wszystko działało jak dawniej. Po kilku godzinach ciężkich prób i walki na podstawie informacji znalezionych na forum debiana udało się wprowadzić stosowną poprawkę do kodu.
Co ciekawe - na podstawie testów (co potem znalazło potwierdzenie w wyżej wymienionym poście na forum) wynika, że funkcja ob_end_clean() działa delikatnie inaczej niż w poprzednich wersjach. Żeby było śmieszniej dokumentacja PHP nie wspomina na ten temat ani słowem. Również detal ten nie jest wymieniony na liście zmian, które powodują brak kompatybilności wstecznej tej wersji w porównaniu do poprzednich wydań. Zresztą jak widać w changelog'u zmian tych jest całkiem sporo.
Na kolejne wydania PHP czeka się całkiem długo a zmiana drugiego numerka powoduje w skrajnym przypadku zatrzymanie pracy skryptów, czego efektem jest biała strona (specyficzny przypadek dla funkcji pracującej na buforze wyjścia). Zdecydowanie bardziej intuicyjny wydaje mi się cykl wydań Python'a w którym to nawet wersja 2.7 była kompatybilna wstecz w ramach całej gałęzi 2.x. Python do tego jest w mojej ocenie językiem dużo bardziej zaawansowanym w rozwoju i dużo szybciej się rozwijającym. Mimo tego udaje się jego twórcom zachować kompatybilność wsteczną projektów.
Poza tym podobny problem dotyczy samego framework'a Kohana i jego gałęzi 3.x gdzie to przy kolejnych wydaniach twórcy aplikacji opartych na tym framework'u nie mogą aktualizować systemu ze względu na brak wstecznej zgodności.
Artykuł udostępniany na licencji CC-BY-SA-3.0
Komentarze
Prześlij komentarz