Что нового в РНР 5

Автор статьи: softportal.com
Сайт Автора: www.softportal.com
E-mail Автора: нет
Дата публикации: 18.01.2006




Другие новые возможности языка

  1. Обработка исключений

    PHP 5 добавляет парадигму обработки исключений, вводя структуру try/throw/catch. Вам остается только создать объекты, которые наследуют класс исключений Exception.

    <?php
    class SQLException extends Exception {
        
    public $problem;
        function
    __construct($problem) {
            
    $this->problem = $problem;
        }
    }

    try {
        ...
        
    throw new SQLException("Couldn't connect to database");
        ...
    }
    catch (SQLException $e) {
        print
    "Caught an SQLException with problem $obj->problem";
    }
    catch (Exception $e) {
        print
    "Caught unrecognized exception";
    }
    ?>

    В настоящее время в целях обратной совместимости большинство внутренних функций не использует исключения. Однако, все новые расширения будут иметь такую возможность, и вы можете использовать такую конструкцию в своем исходном тексте. Кроме того, подобно уже существующей функции set_error_handler(), вы можете использовать set_exception_handler(), чтобы отловить необработанное исключение прежде, чем выполнение скрипта будет закончено.

  2. foreach с сылкой

    В PHP 4 вы не могли пройтись с помощью foreach() по массиву, изменяя его значения. В PHP 5 разрешено выполнять foreach (), используя признак ссылки ('&'), таким образом, меняя переменную, вы меняете элементы массива, по которому проходит итерация.

    <?php
    foreach ($array as &$value) {
        if (
    $value === "NULL") {
            
    $value = NULL;
        }
    }
    ?>

  3. Значения по умолчанию для параметров, передаваемых по ссылке

    В PHP 4 задать значение по умолчанию можно было только для параметров, которые передаются по значению. Теперь поддерживается установка значений по умолчанию для параметров, передаваемых по ссылке.

    <?php
    function my_func(&$arg = null) {
        if (
    $arg === NULL) {
            print
    '$arg is empty';
        }
    }
    my_func();

    ?>