2008-08-09 9 views

Odpowiedz

8

Pracowałem też kiedyś nad aplikacją, która dość mocno korzystała z obsługi XML-a PHP4 i wymagałaby sporo pracy, aby przejść do PHP5.

Jedną z innych istotnych zmian, na które patrzyłem w tym czasie, była zmiana domyślnej obsługi parametrów funkcji. W PHP4, jeśli pamiętam, były one przekazywane przez kopie, chyba że podano inaczej, ale w PHP5 domyślnie jest zmieniany na przekazywanie. W dobrze napisanym kodzie, prawdopodobnie nie zrobi to dużej różnicy, ale z pewnością może spowodować problemy.

Myślę, że jedną z rzeczy, które znalazłem zmienione, jest to, że obiekty nie mogą już nadpisywać pola "tego". Powiedziałbym, że był to naprawdę zły pomysł (i myślę, że nie był to celowy aspekt w PHP4), ale z pewnością znalazłem kilka części naszego systemu, które się na nim opierały.

Mam nadzieję, że niektóre z nich pomagają.

+0

Po prostu zauważyłem ten wpis na górze wyników wyszukiwania Google, gdy szukałem argumentów PHP4 i PHP5 przekazywanych do zachowania funkcji. [instrukcja php] (http://php.net/manual/en/functions.arguments.php) stwierdza inaczej; przekazywanie wartości (pass-by-copy) to _still_ domyślnie. –

1

Mieliśmy aplikację, która oparła się głównie na PHP 4 funkcje XML DOM i to wymaga dużo przezbrojenia zmienić na PHP 5.

poza tym większość zmian zostały ulepszenia rzeczy jak obsługi błędów (w celu skorzystania wyjątków) i klas PHP.

2

Najlepszą radą mogę dać nikomu pracy z PHP4 to:

error_reporting(E_ALL); 

To dość dużo powie dokładnie to, co trzeba zrobić.

+0

Przed lub po migracji? –

1

OOP jest jedną z największych różnic. Nie złamie się, ponieważ style OOP w PHP4 i PHP5 są wymienne, ale polecam korzystanie z nowych stylów OOP PHP5. Przekształcenie istniejących klas na PHP5 nie jest wielkim wysiłkiem i daje dodatkowe magiczne metody, które mogą pomóc w rozwiązaniu niektórych istniejących hacków (pamiętam, że w większości klas używam prawie bezużytecznej metody równoważnej __toString).