LINUX.ORG.RU

Вышел PHP 5.4.0

 ,


0

0

Разработчики PHP рады сообщить о релизе популярного языка программирования под номером 5.4.0. В релиз вошли следующие изменения:

  • Новые синтаксические конструкции:
    • Traits - иначе говоря - миксины, то есть, наборы методов, которые можно использовать в нескольких классах
    • краткая запись массивов - $a = [1, 2, 3, 4]; или $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];
    • <?= доступен всегда, независимо от значения опции short_open_tag
    • Числа в двоичном формате теперь можно записывать в формате 0b001001101
    • остальные изменения
  • Улучшена производительность и уменьшено потребление ОЗУ
  • Улучшены сообщения об ошибках и предупреждения
  • Поддержка многобайтовых кодировок теперь присутствует во всех сборках и может быть включена и выключена в настройках.
  • В режиме CLI появился встроенный вебсервер - для удобства разработки

Обратно-несовместимые изменения:

  • Убраны register globals, magic quotes и safe mode
  • Убрана конструкция break/continue $var
  • Убрана опция allow-call-time-pass-reference

Версия 5.4.0 будет последней, в которой будут официально поддерживаться ОС Windows XP и Windows 2003.

Руководство по апгрейду с версии 5.3 доступно здесь.

Полный чейнджлог можно прочитать здесь.

>>> Подробности

★★★★★

Проверено: JB ()
Последнее исправление: provaton (всего исправлений: 7)

Убрана конструкция break/continue $var

$var надо выделять жирно!
А то всю голову сломал, как дальше жить без break и continue!

Dramokl
()

APC

А как там на счёт включения в базовый пакет расширенных кэширующих утилит? Вроде APC (Alternative PHP Cache, относится к акселераторам PHP) хотели включить по умолчанию. Правда он давненько не обновлялся.

CSRedRat
()
Ответ на: комментарий от r4

удобства поиска уязвимостей. Кому он был нужен?

нужен. для брошенных (в разработке) проектов.

ну вот нафейхоа выпиливать-то совсем?
я понял когда они по уомлчанию его отключили, но вот насовсем зачем выпиливать?
я в курсе всех + -

mumpster ★★★★★
()

сделал make, сделал make test, и - получите и распишитесь

EXPECTED FAILED TEST SUMMARY
---------------------------------------------------------------------
Test open_basedir configuration [tests/security/open_basedir_linkinfo.phpt]  XFAIL REASON: BUG: open_basedir cannot delete symlink to prohibited file. See also
bugs 48111 and 52176.
Inconsistencies when accessing protected members [Zend/tests/access_modifiers_008.phpt]  XFAIL REASON: Discussion: http://marc.info/?l=php-internals&m=120221184420957&w=2
Inconsistencies when accessing protected members - 2 [Zend/tests/access_modifiers_009.phpt]  XFAIL REASON: Discussion: http://marc.info/?l=php-internals&m=120221184420957&w=2
Bug #48770 (call_user_func_array() fails to call parent from inheriting class) [Zend/tests/bug48770.phpt]  XFAIL REASON: See Bug #48770
Bug #48770 (call_user_func_array() fails to call parent from inheriting class) [Zend/tests/bug48770_2.phpt]  XFAIL REASON: See Bug #48770
Bug #48770 (call_user_func_array() fails to call parent from inheriting class) [Zend/tests/bug48770_3.phpt]  XFAIL REASON: See Bug #48770
Initial value of static var in method depends on the include time of the class definition [Zend/tests/method_static_var.phpt]  XFAIL REASON: Maybe not a bug
DateTime::add() -- fall type2 type3 [ext/date/tests/DateTime_add-fall-type2-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::add() -- fall type3 type2 [ext/date/tests/DateTime_add-fall-type3-type2.phpt]  XFAIL REASON: Various bugs exist
DateTime::add() -- fall type3 type3 [ext/date/tests/DateTime_add-fall-type3-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::add() -- spring type2 type3 [ext/date/tests/DateTime_add-spring-type2-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::add() -- spring type3 type2 [ext/date/tests/DateTime_add-spring-type3-type2.phpt]  XFAIL REASON: Various bugs exist
DateTime::add() -- spring type3 type3 [ext/date/tests/DateTime_add-spring-type3-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::diff() -- fall type2 type3 [ext/date/tests/DateTime_diff-fall-type2-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::diff() -- fall type3 type2 [ext/date/tests/DateTime_diff-fall-type3-type2.phpt]  XFAIL REASON: Various bugs exist
DateTime::diff() -- fall type3 type3 [ext/date/tests/DateTime_diff-fall-type3-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::diff() -- spring type2 type3 [ext/date/tests/DateTime_diff-spring-type2-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::diff() -- spring type3 type2 [ext/date/tests/DateTime_diff-spring-type3-type2.phpt]  XFAIL REASON: Various bugs exist
DateTime::diff() -- spring type3 type3 [ext/date/tests/DateTime_diff-spring-type3-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::sub() -- fall type2 type3 [ext/date/tests/DateTime_sub-fall-type2-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::sub() -- fall type3 type2 [ext/date/tests/DateTime_sub-fall-type3-type2.phpt]  XFAIL REASON: Various bugs exist
DateTime::sub() -- fall type3 type3 [ext/date/tests/DateTime_sub-fall-type3-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::sub() -- spring type2 type3 [ext/date/tests/DateTime_sub-spring-type2-type3.phpt]  XFAIL REASON: Various bugs exist
DateTime::sub() -- spring type3 type2 [ext/date/tests/DateTime_sub-spring-type3-type2.phpt]  XFAIL REASON: Various bugs exist
DateTime::sub() -- spring type3 type3 [ext/date/tests/DateTime_sub-spring-type3-type3.phpt]  XFAIL REASON: Various bugs exist
Bug #52062 (large timestamps with DateTime::getTimestamp and DateTime::setTimestamp) (32 bit) [ext/date/tests/bug52062.phpt]  XFAIL REASON: Waiting for resolution of the 32-bit case.
Bug #53437 (Crash when using unserialized DatePeriod instance) [ext/date/tests/bug53437.phpt]  XFAIL REASON: Bug #53437 Not fixed yet
RFC: DateTime and Daylight Saving Time Transitions (zone type 3) [ext/date/tests/rfc-datetime_and_daylight_saving_time-type3.phpt]  XFAIL REASON: RFC not implemented yet
Bug #42718 (unsafe_raw filter not applied when configured as default filter) [ext/filter/tests/bug42718.phpt]  XFAIL REASON: FILTER_UNSAFE_RAW not applied when configured as default filter, even with flags
Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) [ext/session/tests/bug60634.phpt]  XFAIL REASON: Long term low priority bug, working on it
Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - fatal error in write during exec [ext/session/tests/bug60634_error_1.phpt]  XFAIL REASON: Long term low priority bug, working on it
Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - exception in write during exec [ext/session/tests/bug60634_error_2.phpt]  XFAIL REASON: Long term low priority bug, working on it
Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - fatal error in write after exec [ext/session/tests/bug60634_error_3.phpt]  XFAIL REASON: Long term low priority bug, working on it
Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - exception in write after exec [ext/session/tests/bug60634_error_4.phpt]  XFAIL REASON: Long term low priority bug, working on it
Bug #60634 (Segmentation fault when trying to die() in SessionHandler::write()) - fatal error in close during exec [ext/session/tests/bug60634_error_5.phpt]  XFAIL REASON: Long term low priority bug, working on it
Bug #45712 (NaN/INF comparison) [ext/standard/tests/math/bug45712.phpt]  XFAIL REASON: Bug 45712 not fixed yet.

Это уже надёжно, или ещё глобально? :)

deb
()

работает шарманка!

PHP Version 5.4.0

System Linux mobian 3.2.0-1-686-pae #1 SMP Fri Feb 17 06:27:21 UTC 2012 i686
Build Date Mar 2 2012 17:01:25
Configure Command './configure' '--prefix=/opt/php54'
Server API Built-in HTTP server


Как теперь с помощью этого чуда делать динамические роуты без всяких .htaccess? Как сделать полноценную bottle или sinatra из php?

deb
()

Совсем уже выросли ребята.

melkor217 ★★★★★
()
Ответ на: комментарий от fjfalcon

Версия 5.4.0 будет последней, в которой будут официально поддерживаться ОС Windows XP и Windows 2003.

А как работа серверного языка может поддерживаться на xp и 2k3?

В чём вообще выражается поддержка XP и 2003?

VeroLom ★★
()

<?= доступен всегда, независимо от значения опции short_open_tag

Наконец то, а то некоторые кричали, что нужно обязательно писать <?php echo $blah ?>

xorik ★★★★★
()
Ответ на: комментарий от Dramokl

Убрана конструкция break/continue $var

Кстати, я так понял break 3 - осталась, а $var = 3; break $var - убрали. Или я не прав?

helios ★★★★★
()

$a = [1, 2, 3, 4];

Уже поздно.

O02eg ★★★★★
()
Ответ на: комментарий от xorik

Наконец то, а то некоторые кричали, что нужно обязательно писать <?php echo $blah ?>

На некоторых хостерах это реально не работало. Всё правильно кричали. Теперь через годик можно будет и просто <?= писать.

helios ★★★★★
()
Ответ на: комментарий от Quasar

Ребята явно попробовали python

Сначала ребята попробовали травы, а потом решили скрестить пых с пестоном.

anonymous
()
Ответ на: комментарий от anonymous

благодарность разработчикам

Словно они ее тут прочитают -_-

Их родители на лор не пускают.

AnDoR ★★★★★
()
Ответ на: комментарий от xtraeft

у тебя три скобочки в каждом посте - это очень печально

debugger invoked on a SB-INT:SIMPLE-READER-ERROR in thread
#<THREAD «initial thread» RUNNING {1002998E43}>:
unmatched close parenthesis

AnDoR ★★★★★
()
Ответ на: комментарий от exst

а когда выйдет php6 ?

Насколько мне не изменяет память уже в 2005 году шли разговоры , что вот, вот...выйдет PHP6 Идет 2012 год...

yanka ★★
()
Ответ на: а когда выйдет php6 ? от yanka

что вот, вот...выйдет PHP6 Идет 2012 год...

Да вы что! Появились $a = [1, 2, 3, 4]! Можно теперь хоть php7 это называть, это же несравнимое улучшение!

deb
()
Ответ на: Это все фигня от shimon

Вы лучше ткните мне пальцем в тех, у кого на продакшене так называемый Perl 6.

Perl 6 перевернёт мировую историю, или сам доживёт до её окончания. А php6 - это просто версия, которая была актуальна несколько лет назад, чтобы хоть как-то сравняться с python и ruby.

deb
()
Ответ на: комментарий от ggrn

> >> Changed default value of «default_charset» php.ini option from ISO-8859-1 to UTF-8.

> ну всё готов для десктопа

Что интересно, они поменяли не дефолтное значение, а значение в дефолтных php.ini

provaton ★★★★★
() автор топика

краткая запись массивов - $a = [1, 2, 3, 4]; или $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];

Ну неужели появилось...

OramahMaalhur
()
Ответ на: комментарий от anonymous

Этих вещей нету в официальной новости о релизе, поэтому я и не переводил. Если хотите - можете перевести и написать в спецтеме - корректоры вставят.

provaton ★★★★★
() автор топика
Ответ на: комментарий от fjfalcon

> А как работа серверного языка может поддерживаться на xp и 2k3?

Наличием собранных бинарников на оффсайте, больше наверное никак.

provaton ★★★★★
() автор топика
Ответ на: комментарий от helios

> Для дурака объясните, в чём мега-фишка trait'ов?

В PHP нету множественного наследования. Допустим, у тебя есть несколько классов, которые уже унаследованы от кого-то. И в них есть общие методы, которые по каким-то причинам нельзя добавить в родителя. Раньше приходилось их копипастить в каждый из классов, то есть иметь code duplication. Сейчас общие методы можно засунуть в треит и включить треит в каждый из классов.

Это они спионерили миксины из руби (там тоже единичное наследование) и дали им странное название.

provaton ★★★★★
() автор топика
Ответ на: комментарий от fjfalcon

А как работа серверного языка может поддерживаться на xp и 2k3?

а что такое серверный язык?

AVL2 ★★★★★
()
Ответ на: APC от CSRedRat

Вроде APC (Alternative PHP Cache, относится к акселераторам PHP) хотели включить по умолчанию.

Нету. Вроде планировали к 6-ке.

myhand
()
Ответ на: комментарий от deb

Как теперь с помощью этого чуда делать динамические роуты без всяких .htaccess?

Открой для себя чудеса RFC 2616 и функции PHP header().

myhand
()
Ответ на: комментарий от provaton

Благодарю. Тогда полезное нововведение.

helios ★★★★★
()
Ответ на: комментарий от deb

Мои глаза не обманывают меня? Это правда появилось только в 2012 году?

Убрали слово array - разницы никакой, вообщем-то.

ForwardToMars
()
Ответ на: комментарий от helios

Тут другое важно: это потенциальная угроза безопасности.

Какие-то фантазии, не? Это просто временная переменная, как и любая другая временная переменная, либо живёт, либо ты её unset. От других временных переменных у тебя угрозы безопасности не появляются?

ForwardToMars
()
Ответ на: комментарий от ForwardToMars

Блин, что-то мне пример в голову не идёт. Из цикла бывает (очень редко) делаю return. А вот break...

helios ★★★★★
()
Ответ на: комментарий от ForwardToMars

ПРоблема как раз в том, что язык заставляет программиста следить за своевременным удалением «временных» переменных (коих реально нет). Это как заботиться о выделении памяти в скриптовых языках - маразм.

helios ★★★★★
()

Версия 5.4.0 будет последней

Вот это было бы прекрасно. Сколько можно уже засорять веб PHPшечкой и десктопы СИшечкой. Уничтожить обоих и сразу в вебе станет меньше мусорных говносайтов с детскими уязвимостями и проблемами и на десктопе сразу станет намноге проще без утечек памяти и прочих глупостей.

Версия 5.4.0 будет последней, в которой будут официально поддерживаться ОС Windows XP и Windows 2003.

PHP 5.5 - теперь в системных требованиях Aero, DirectX 12 и 4Гб ОЗУ для встроенного веб-сервера!

Alve ★★★★★
()
Ответ на: комментарий от VladimirMalyk

потому что ненужны

Ага, а потом мучиться, как новую функциональность в язык добавить, что бы обратная совместимость не нарушилась?

x86_64 ★★★
()

краткая запись массивов - $a = [1, 2, 3, 4]; или $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];
<?= доступен всегда, независимо от значения опции short_open_tag
В режиме CLI появился встроенный вебсервер - для удобства разработки

Яж два года этого ждал!

drull ★☆☆☆
()
Ответ на: комментарий от Tark

Вроде в php же сейчас есть сборщик мусора?

Конечно есть. Но, предположим, есть такая ситуация

function bootstrap()
{
    foreach ( $SECRET as $s )
        if (! isset($s) )
            some code

    ....

    foreach ( $PLUGINS_BEFORE_HOOK as $file )
        include PLUGINS . $file;

    ....
}

Когда удалится $s? Будет ли доступен $s в плагинах?

helios ★★★★★
()
Ответ на: а когда выйдет php6 ? от yanka

С разморозкой. Еще в 2010 году они признались в неосиляторстве и закопали 6 версию.

BredoGen
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.