Pull to refresh

Comments 80

Главное то, что с этим обновлением прекращается поддержка ветки 5.2.x.

Давно пора. 5.3 слишком хорош, чтобы до сих пор разрабатывать для 5.2
В двух словах, чем он так хорош?
Я вижу только недостатки:
— из-за «устаревших» функций будут проблемы со старым кодом
— из-за goto будет больше говнокода
Новый Garbage Collector, увеличение скорости, лямбда-функции, неймспейсы, оператор ?:, late static binding.
Это из того, что вспомнил.
По поводу сборщика мусора и увеличения скорости — есть результаты исследования на реальных задачах? Не сомневаюсь, что на синтетических тестах всё красиво, но в жизни обычно всё не так.

Неймспейсы — это интересно, не знал.

Чем тернарный оператор в 5.3 отличается от аналогичного в 5.2?

В свое время PHP подкупил меня своей простотой и доступностью. Вполне рабочий код можно писать без каких-то сложных архитектурных изысков, с помощью десятка функций. Жаль, это время уходит.

function getValue ($default = null) {
    return $this->value ?: $default;
}


В жизни всё так. Вы почитайте отличии GC. Теперь ПХП можно запустить в FastCGI без таких ужасных утечек, как были в < 5.3
Ещё хороший плюс, например
$log->writer(function ($data) use ($something) {
// write data somewhere
})

И никаких, мать их, extends по любому пуку!
Но вот этот use в замыканиях — вообще жесть. Нигде больше такого извращения не видел. Я так понял это для совместимости со старым кодом сделано, но лучше бы просто function заменили на lambda для замыканий или что то в этом роде.
такая жесть есть в js :) и это добавляет гибкости ему
js аналог:
$something = «some...»
log.writer(function ($data) {
// we can use $something
})
Такая «жесть» есть в большинстве современных языков и называется замыканием. Особо удобно ими пользоваться при функциональном программировании. Но я нигде не видел чтобы переменные, доступные в контексте замыкания из родительского контекста, нужно было вручную указывать…

Вы же сами видите разницу — в JS определяешь функцию и используешь без проблем любую переменную из родительского контекста. В питоне все точно так же, еще в паре языков которые я использовал тоже. Но в PHP нужно принудительно ручками добавлять use(захватываемые из контекста переменные) чтобы указать какие переменные можно использовать.

Вот тут Замыкание_(программирование) можно посмотреть где как реализуется.
В PHP очень изолированные неймспейсы, например это так же похоже с тем что бы достать в функции глобальные переменные через global или $GLOBALS. Зачем так сделали, я не изучал. А может и правда — просто ради совместимости.
> Такая «жесть» есть в большинстве современных языков и называется замыканием.

Замыкания в современных языках обычно не требуют указывать то, какие переменные они будут замыкать.
Так о том и речь! Я так и написал — замыкания в PHP сделали, но использовать их не удобно т.к. нужно все переменные указывать вручную.
Это не время, это Вы сами уходите от таких подходов.
Вы и в PHP 5.3 могли бы писать рабочий код из десятка функций. Просто сами теперь понимаете, что это не правильно ;)
Другой вопрос — нахрена это называть 5.3, а не 6. Но это вопрос к разработчикам :)
6 берегут для Юникода :) Правда, такое ощущение, что когда его всё же сделают, то будет 5.100500 версия :(
Таки перескочили на 7!
5.3 хорош, когда не требуется zend optimizer. На 5.3 его не хватает.
Не так всё просто.
Поддержка ZendOptimizer на php 5,3 под FreeBSD ещё не заявлена:
«Производственный директор компании Zend Кент Митчелл (Kent Mitchell) официально заявил, что поддержка платформы FreeBSD в продуктах Zend прекращена в связи с отсутствием спроса.

По словам Митчелла, спрос на коммерческую продукцию компании Zend под платформу FreeBSD ничтожно мал — даже на сборки под Mac спрос на порядки выше. Оставлять поддержку FreeBSD-версий только для бесплатных продуктов (в частности, Zend Optimizer) также нецелесообразно, потому что они развиваются на деньги, вырученные при продаже коммерческой продукции.

Заметим, что последняя доступная под FreeBSD версия Zend Optimizer — 3.3.9 — существует только в 32-битной сборке.

Мейнтейнер PHP во FreeBSD Алекс Дюпре (Alex Dupre) уже сообщил, что новых релизов порта ZendOptimizer больше не будет.»

Пока не будет найден выход или компания Zend не пересмотрит свои позиции ZendOptimizer буден не доступен на FreeBSD
Странная позиция у разработчиков, Zend-ом кодируются многие продукты, которые используются в т.ч. на FreeBSD, если работать в этой ОС не будет, значит и спрос упадет на продукты, а значит и спрос упадет на продукцию Zend
Мама родная… а я в понедельник уже хотел начать пытаться переводить проект на 5.3.
А вот хрен. :(
Да, согласне 5.3 офигенин! И как мы раньше только писали без замыканий?
Замыкания ещё не прочувствовал, а вот неймспейсы и нормальную сборку мусора — уже :)
Замыкания чертовски афигенны, можно писать обработчики на всякую ерунду. Например сделать класс HTML таблицы, и ставить обработчик на каждую ячейку, ряд, столбец. Например:

$t = new SomeTable($array);

$t->setColumnHandler(function($value){
      return "<b>{$value} руб.</b>";
});


Вот, весь ряд таблицы стал жирным и к нему дописалось ".руб".

А на счет неймспейсов как раз я не успел все прелести понять, для модулей должно быть удобно, разделение на подпапки… но, что-то никак
Не вижу здесь замыкания, вижу анонимную функцию :) В таких случаях она не более, чем сахар (если не вдаваться во внутренности транслятора). Неймспейсы правда тоже по идее, но, имхо, куда более сладкий
Обычно анонимная функция бессмысленна без переменных, которые сверху, просто я их не нарисовал тут. Обычно все-таки это замыкание:

$t = new SomeTable($array);

$some_var = "blabla";

$t->setColumnHandler(function($value) use($some_var){ //вот замкнули бедолагу
      return '<b>'.($value+$some_var).' руб.</b>';
});

с этим обновлением прекращается поддержка ветки 5.2.x.

С интересом ждём реакции всяких Bitrix, ISP Panel и т.п, требующих даунгрейда PHP при установке на новые системы, а также shared-хостеров — интересно что для них значит окончание поддержки (сомневаюсь что среди них найдётся кто-то настолько сознательный что возьмётся сам продолжить поддержку 5.2 и исправлять при случаи уязвимости).
Есть такие shared-хостеры у которых до сих пор 5.1 и даже 4.3 но при этом ещё и настроен как РНР3 (глобалсы, волшебные кавычки, итд...) так что сомневаюсь что в мире шариков что либо изменится в ближайшем будущем.

А вот для тех кто идёт в ногу с прогрессом, это скорее хорошая новость, линейка 5.3 откровенно радует.
но при этом ещё и настроен как РНР3 (глобалсы, волшебные кавычки, итд...)

Я надеюсь они пожалеют об этом… Муахаха!
У них выбора не много. Либо повезёт и ничего не будет, либо не повезёт и будет мало приятного, либо обновятся и настроят правильно, но при этом от них уйдут все клиенты у которых скрипты времён «phpnuke 0.0.1-alfa» (т.е добрые 80-95 процентов) выбор не особо богатый.
У меня до сих пор где в интернетах крутится полдюжины наговнокоденых интернет-магазинов на PHP3. Не скажу где, чтоб «муахаха» не было :). Я от них уже несколько лет как все пароли потерял. И ничего, очень даже бодренько крутятся.
{{{пароли потерял}}}
Так «восстанови» (устрой сам себе «муахаха») =D
Ну мне лично как раз интересны действия не столько «шариков», сколько разработчиков заметных коммерческих продуктов, до сих пор требующих PHP 5.2. Если раньше они могли аргументировать тем, что он, якобы, надёжнее, то теперь это официально не так.
Но можно ведь собрать для себя что надо) Не обязательно пользоваться той версией, что предлагает хостер…
Могу сказать за Битрикс (да, я работаю в Битриксе): все актуальные редакции всех наших продуктов без проблем работают и на 5.2.x, и на 5.3.x.

Откуда у Вас сведения про требование даунгрейда PHP? Нет такого.

Дайте, пожалуйста, или ссылку, или скриншот.
Чел сказал ключевое слово «всяких»: то есть привел список из того что первое на ум пришло, возможно вашего продукта он и в глаза не видел, а уж тем более скриншота не даст)
Этого уже нет. Исправлено в каком-то из очередных апдейтов.
Здесь ключевое — «у меня… написаны».

Битрикс давным-давно работает корректно в 5.3.

То, что какой-то разработчик написал кучу собственного не совместимого с 5.3 кода, не означает того, что в этом виноват Битрикс.
Пардон. Как-то отправил сообщение не дописав случайно.
Здесь ключевое — «у меня… написаны»

Я так понял перавая и втроая строки это отдельные мысли про разные приложения. Хотя чего гадать, вот же автор рядом отметился.
не означает того, что в этом виноват Битрикс.

А я никого не обвиняю. Напротив, Битрикс упомянул как пример большого серьёзного игрока на рынке, от которого может зависеть, или который может служить хорошим индикатором «признания» PHP 5.3. Как-то так уж получилось что о проблемах совместимости Bitrix c 5.3 я слышал неоднократно, но это всё сплетни, конечно же :-) Я рад что это не правда.
так, Drupal обновить успел. А остальные?
Хех, вчера MySQL 5.5 зарелизили, сегодня PHP 5.2 перестали поддерживать. Мир меняется в лучшую сторону :)
Сегодня еще и libevent 2.0 стал стабильным ;-) Ждите плюшек.
Ждём, проанонсировать плюшки на хабре не забудьте ;)
что-то у них на сайте не вижу, где-то в рассылках писалось?
Хотел написать плохое про Вооообще php и про обновление в частности, но — не буду. Карма и так на нуле.
Поправил чуть-чуть карму, пишите про «Вооообще», скучно-что-то, похоливарить охота :)
лучше не надо. во-первых опять будет нудение о том, что нужно что-то сладкое типа Руби, или что-то строгое типа ДоДиез, что ПХП копирует Джаву, что одни быдлокодеры и т.д. При этом человек печётся про карму, написал такое сообщение, вроде и взбзданул, но так тихонечько, что никто не заметил, а вонь пошла.
Еще и флешер. Короче, слишком неинтересно. Сомневаюсь, что спор будет интересным.

Хотя, на самом деле, я учавствовал только в одном интересном анти-php холиваре против naryl, который знает большое количество языков, разных и, в т.ч. кучу не мейнстримных.
Можно почитать в топике на айбаше: ibash.org.ru/forum/index.php?t=1796&page=2#76
Начиная со слов Aelita «Не дай бог мне думать так»
Спасибо, почитал с интересом :)

А вообще про «ДоДиез» я бы поспорил с целью узнать о нём что-то новое. Но обычно аргументы в его пользу это инфраструктура MS, а не качества самого языка. Тем более что сейчас, афаик, и PHP как-то вписывается в .NET, а значит и ему эта инфраструктура доступна. А начинаешь говорить о C# вне MS (в Mono под Linux в частности), как-то всё сводится к «хочешь C# — покупай(разводи клиентов) WinSrv, ставь IIS, используй фреймворки от MS и не компостируй мозги людям вопросами „как на чистом C# слушать сокет и рулить процессами/потоками“».
Эх, если бы эти спорщики рассказывали что-то интересное.

Ато рассказывают «ПХП плохой, потому что в ДоДиез по-другому методы вызываются и исходники джумлы хуже, чем мой любимый движок на Джава»

а вообще да — нормальные холивары интересно читать, согласен)
Прошу прощения за оффтоп.
Вообще-то, думаю, пример холивара с naryl — пример плохой.
Хотя бы потому, что он там скачет с языка на язык. При этом преимущества разных языков противопоставляет минусам (мнимым, на мой взгляд) PHP.
И если следовать тому, что он пишет, получается, что компания, занимающаяся разработкой софта, должна для каждого проекта в зависимости от области применения (внтуреннее пользование, коммерческий продукт и т. д.) менять язык разработки. А это, скорее всего, потребует и смену команды. Профессионалов (!) в нескольких областях сразу крайне мало, то есть вряд ли получится собрать одну команду на все проекты, а увольнять предыдущую команду тоже нельзя, так как поддерживать-то продукты надо. Получается, компания такая точно погибнет в веренице проблем. В наше время как раз наоборот стремятся найти один язык, который будет решать максимум проблем, даже если цена тому некоторое усложнение.
Однако, кстати, хочу заметить, что php проще какого-нибудь lisp уже потому, что на нем программирует больше людей. Это говорит о его доступности, и мне уже не надо быть одинаково знакомым и с лиспом, и с пхп, чтобы сказать это.
В общем, я со многим, что сказал там товарищ naryl крайне не согласен. Еще раз прошу прощения за оффтоп.
ну, я тоже не согласен, но поспорить было интересно) как минимум, я увидел много разных языков и подходов)
«Еще и флешер.»
Это приговор? Не будет у меня нудения про сладкое. Про карму уже не пекусь.
Моё имхо: php, javascript, html — это языки, которые потворствуют быстрому вхождению и написанию кучи былокода.
Когда проект становится более-менее серьёзным — наступает ппц.
Лучше участившиеся обновления чем их отсутствие после компроментации
Мы даже на новый веб-сервер планируем ставить 5.2.x ибо: PHP 5.3 is not yet supported by Drupal 5.x, but is supported by Drupal 6.14 core and higher (http://drupal.org/requirements). И у нас большинство сайтов на Drupal 5.x, меньше на 6.x, а один даже на 4.x.

Да и пара сайтов на Joomla тоже на версии, которая не поддерживает 5.3 (1.5.14).
даже Joomla 1.0 поддерживает php 5.3 (по крайней мере отлично работает)
Судя по сайту, официально джумла поддерживает 5.3 с версии 1.5.15. В ней не специалист, но 5-ый дрюпал точно криво работает на 5.3.
ну я сужу по личной практике. в джумле 1.0 надо было заглушить вывод E_DEPRECATED и установить default_time_zone, после чего она отлично работала. )
вчера на мастерхосте купил шаред для клиента и обнаружил php 5.3.3! проверил на старых клиентах — php 5.2.12
Думается, что с закрытием поддержки 5.2 можно ожидать появления наконец-то общедоступной ветки 5.4 с ее traits и тд
Я думал, что сразу PHP6 с встроенной поддержкой юникода.
А разве php6 не решили временно приостановить и пересмотреть его базовые принципы, так сказать?
приостановить и накатить в РНР 5.3 столько нововведений, что легко хватило бы на новую версию :))
Очень хорошо, что наиболее востребованные продукты развиваются: php, mysql, ie…
обновил девелоперский сервер (debian lenny) полет нормальный, но пришлось старый метод одного важного класса заменить с goto на _goto и сделать перенаправление через __call. надо будет старые проекты подчистить от этих вызовов…

Эй, зачем карму мне слили? Я теперь пост отредактировать не могу и ошибки исправить
Блин! А у меня на Debian до сих пор ничего новее php 5.2.6 в репозитории (deb ftp.de.debian.org/debian lenny main contrib non-free) нету! Я бы уже давно перешел, а компилировать руками пока что лень ((
Я уже год, наверное, на php 5.3, Debian Lenny
libcanvas@shock:~$ php -v
PHP 5.3.3-0.dotdeb.0 with Suhosin-Patch (cli) (built: Jul 24 2010 01:12:50)
Copyright © 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright © 1998-2010 Zend Technologies
with Suhosin v0.9.32.1, Copyright © 2007-2010, by SektionEins GmbH
libcanvas@shock:~$ cat /etc/apt/sources.list | tail -n 4 | head -n 2
deb php53.dotdeb.org stable all
deb-src php53.dotdeb.org stable all
Ох, сайт-то неофициальный! Страшновато как то!
У меня полгода он в сорцах — полёт нормальный, мускул, кстати, тоже оттуда же.
Переход на новую версию 5.3.4 для некоторых пользователей закончится различными варнингами об устаревании функций и, как следствие, неработоспособностью некоторых элементов или всего сайта

Ждём новую волну заказов на «исправьте, у нас там чего-то перестало работать»…
когда 15 сайтов на допотопной версии содеигнитера, который валится на таких ошибках, как-то совсем не смешно :(
Sign up to leave a comment.

Articles