PHP 5.6.0 released

confguru

ExAdmin
Команда форума
The PHP Development Team announces the immediate availability of PHP 5.6.0. This new version release comes with new features, some backward incompatible changes and many improvements.

The main features of PHP 5.6.0 include:


For a full list of new features, you may read the new features chapter of the migration guide.

PHP 5.6.0 also introduces changes that affect compatibility:

  • Array keys won't be overwritten when defining an array as a property of a class via an array literal.
  • json_decode() is more strict in JSON syntax parsing.
  • Stream wrappers now verify peer certificates and host names by default when using SSL/TLS.
  • GMP resources are now objects.
  • Mcrypt functions now require valid keys and IVs.

For users upgrading from PHP 5.5, a full migration guide is available, detailing the changes between 5.5 and 5.6.0.

For source downloads of PHP 5.6.0, please visit our downloads page. Windows binaries can be found on windows.php.net/download/. The full list of changes is available in the ChangeLog.

Читать дальше...
 

fixxxer

К.О.
Партнер клуба
GMP objects now support operator overloading.
GMP resources are now objects.
М... Я правильно понимаю, что это означает наличие поддержки перегрузки операторов на уровне zend engine?

Пойду-ка поковыряюсь... :)
 

Absinthe

жожо
М... Я правильно понимаю, что это означает наличие поддержки перегрузки операторов на уровне zend engine?
Она всегда была. На уровне экстеншенов.
В том числе и универсальных, которые это выносили в новые магические методы обычных PHP-классов.
 

fixxxer

К.О.
Партнер клуба
Ага. Уже посмотрел, обычный хук на опкоды. Анусненько. Pecl/operator, да, так и работает. Я уж было подумал, там что поэстетичнее.

Ну, ничего, вот щас там в мастере AST появится, будет что поэстетичнее со временем.
 

fixxxer

К.О.
Партнер клуба
AnrDaemon, я про операторы :) Параметрический полиморфизм в php нереализуем без проседания по производительности by design, т.к. типы не входят в сигнатуру метода и проверяются в момент вызова (именно потому они и type _hints_).
 

Vladson

Сильнобухер
Во времена 5.2.6 написал себе гостевушку (так чисто заглушка) без изменений свободно пашет на 5.6.0 :) Учитесь :)
 

shureen

Милорд Лось Кристофер
Жаль дефолтовые значения для функций/методов не вошли в релиз
 

AnrDaemon

Продвинутый новичок
Vladson, хвастунишка. Я сейчас вытащу на свет CMS'ку, написанную во времена 4.3, которая до сих пор работает без единого изменения. Но это никому ни о чём не скажет.
Если код написан без применения сомнительных конструкций, он и будет работать.
 

shureen

Милорд Лось Кристофер
Я имею ввиду:
function func($param1, $param1 = 'value1', $param2 = 'value2') {}
func('value', default, 'new_value2');
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
shureen, ага, в итоге приходится дефолты пилить через массив параметров =(
 

Вурдалак

Продвинутый новичок
Да я вас умоляю, неужели это частый кейс? Обычно если аргументов много, это уже о чём-то говорит.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Вурдалак, нет, не когда аргументов много, а когда их 5-6 и тебе надо то первый, а то последний. И часто так, во многих местах...
 

Активист

Активист
Команда форума
Не всегда, но иногда юзаю так.
PHP:
   /**
    * Some function
    * @param string $foo If unset use "bar" value
    * @param string $bar If unset use "foo" value
    * @return void
    */
    function bar($foo = null, $bar = null)
    {
        if (!isset($foo)) {
            // set default
            $foo = "bar";
        }
     
        if (!isset($bar)) {
            // set default
            $bar = "foo";
        }
    }
 

Vladson

Сильнобухер
Если код написан без применения сомнительных конструкций, он и будет работать.
Если сомнительных конструкций нет, это я называю качественный код. Увы в наше время народ всё больше и больше забывает про KISS и лепят что попало из чего попало... Обидно... Язык развивается, но и говнокод не отстаёт, тоже становится всё изощрённее и изощрённее...
 

shureen

Милорд Лось Кристофер
Полно встроенных функций имеют кучу аргументов, элементарный пример htmlspecialchars, чтобы указать кодировку и не трогать флаги, нужно их явно засетапить. Куда удобнее бы было указать просто default. И да говнокода хватает, особенно когда кучу народу над проектом работает, селяви :)
 
Сверху