Новые возможности

PHP 5.3.0 предлагает широкий спектр новых возможностей:

  • Добавлена поддержка пространств имен.
  • Добавлена поддержка позднего статического связывания.
  • Добавлена поддержка меток перехода (ограниченный goto).
  • Добавлена поддержка нативных замыканий (closures) (анонимные/лямбда-функции).
  • Появились два магических метода: __callStatic() и __invoke().
  • Появилась поддержка синтаксиса Nowdoc, подобный Heredoc, но с одинарными кавычками.
  • Теперь возможно использовать Heredoc для инициализации статических переменных и свойств/констант классов.
  • Heredoc теперь может быть объявлен, используя двойные кавычки, дополняющие синтаксис Nowdoc.
  • Константы теперь могут быть объявлены вне класса, используя ключевое слово const.
  • У тернарного оператора есть теперь сокращенный вид: ?:.
  • Обертка (wrapper) HTTP-потока стала воспринимать коды статуса от 200 до 399 как успешные.
  • Стал возможен динамический доступ к статическим методам:
    <?php
    class {
       public static 
    $foo 123;
    }

    $a "C";
    echo 
    $a::$foo;
    ?>

    Результат выполнения данного примера:

    123
    
  • Исключения теперь могут быть вложенными:
    <?php
    class MyCustomException extends Exception {}

    try {
        throw new 
    MyCustomException("Exceptional"112);
    } catch (
    Exception $e) {
        
    /* Обратите внимание, что для передачи $e
         * в RuntimeException используется третий параметр. */
        
    throw new RuntimeException("Rethrowing"911$e);
    }
    ?>
  • Добавлен сборщик мусора для циклических ссылок. Он включен по умолчанию.
  • Функция mail() теперь поддерживает журналирование отправки письма с помощью директивы mail.log. (Примечание: это применимо только для писем, отправленных этой функцией.)