Перевёл свой сайт на PHP 5.3.4
Решил поднять свои старые проекты на PHP под MacOS, чтобы на ноуте их нормально разрабатывать. В том числе, перетащил свой сайт. У меня движок сплошной эксперимент, так что используются различные тонкие вещи (например, ленивые вычисления при помощи __toString), которые в PHP 5.3 (который у меня на «Маке») как-то поломали. На хостинге у меня 5.2.x, убил около часа, чтобы всё портировать.
Мелочи вспоминать не хочется, из того что запомнилось — PHP 5.3 нервно, с какой-то невнятной ошибкой, среагировал на «&new», оставшиеся в коде со времён PHP4 (там объекты не передавались по ссылке и объект, порождаемый через «new» копировался при присваивании, если явно не указать, что его надо передать по ссылке), помимо этого, вызов метода объекта через call_user_func работает теперь как-то иначе (не выяснял как именно), но пришлось менять на явный вызов через $object->$method.
С веткой PHP 5.3 я почти не работал, когда эта версия стала появляться в пакетах стабильных версий систем, я уже перешёл на «Пайтон».
Если я правильно помню (сам перешёл на python), то call_user_func(array($instance, ’method’), $param1, $param2, ...). Ну или вместо $instance строка с названием класса для вызова статического метода. С точки зрения python’а очень дико.
Комментарий для rembish.livejournal.com:
Да, я именно о таком вызове и говорю. Он почему-то стал источником глюков, пришлось заменить его на $instance->method(param1, param2).
С точки зрения Пайтона PHP многословен. Но ничего дикого в такой конструкции нет.
Кстати: http://avva.livejournal.com/2346628.html?mode=reply
Уровень отображения об ошибках E_ALL, да?
Комментарий для Аноним:
Ошибки логируются, не отображаются. Но E_ALL, конечно же. Только как это связано? Конструкция именно делала не то, что нужно, а не выдавала ошибку. Вот в этом коде, кстати: http://bolknote.ru/files/akyn.phps Там она почти в начале.
Комментарий для Аноним:
2.2250738585072011e-308
Комментарий для test:
Это, типа, попытка поломать сайт?