Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Перевёл свой сайт на 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 я почти не работал, когда эта версия стала появляться в пакетах стабильных версий систем, я уже перешёл на «Пайтон».

6 комментариев
pan Ramon (rembish.livejournal.com) 2011

Если я правильно помню (сам перешёл на python), то call_user_func(array($instance, ’method’), $param1, $param2, ...). Ну или вместо $instance строка с названием класса для вызова статического метода. С точки зрения python’а очень дико.

Евгений Степанищев (bolknote.ru) 2011

Комментарий для rembish.livejournal.com:

Да, я именно о таком вызове и говорю. Он почему-то стал источником глюков, пришлось заменить его на $instance->method(param1, param2).

С точки зрения python’а очень дико.

С точки зрения Пайтона PHP многословен. Но ничего дикого в такой конструкции нет.

Кстати: http://avva.livejournal.com/2346628.html?mode=reply

Аноним 2011

Уровень отображения об ошибках E_ALL, да?

Евгений Степанищев (bolknote.ru) 2011

Комментарий для Аноним:

Ошибки логируются, не отображаются. Но E_ALL, конечно же. Только как это связано? Конструкция именно делала не то, что нужно, а не выдавала ошибку. Вот в этом коде, кстати: http://bolknote.ru/files/akyn.phps Там она почти в начале.

test 2011

Комментарий для Аноним:

2.2250738585072011e-308

Евгений Степанищев (bolknote.ru) 2011

Комментарий для test:

Это, типа, попытка поломать сайт?