Главная | Статьи | Регистрация | Вход | RSS
Меню сайта
Смотрю Mac блог!
Категории каталога
PHP [6]
статьи по установки скриптов, описание функций и т.д.
PHP5 [5]
статьи по php5, новые возможности и функции
Хостинг (Hosting) [4]
описания работы с хостингом
Свой сервер [2]
описание как создать и запустить свой сервер с Apache, PHP, MySQL
Средства разработки [3]
утилиты и помощники при разработки веб-приложения
Рекламные статьи [1]
ссылки:
Друзья сайта
Статистика
PHP5
Главная » Статьи » PHP5

Новые возможности языка (3я часть)

Помимо новых объектно-ориентированных возможностей в PHP5 появились и другие нововведения. Среди которых обработка исключений. Было так же добавлено несколько новых библиотек, которые будут полезны разработчикам.

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

В PHP5 появился механизм создания обработки исключений, который реализуется с помощью новых ключевых слов try, throw и catch. Благодаря этому нововведению обработка ошибок станет более простой и «аккуратной».

Код, в котором может произойти ошибка, заключается в блок try. Для генерации и исключения используется ключевое слово throw. А перехватываются и обрабатываются исключения в блоках catch, которых может быть несколько. Следующий пример демонстрирует использование механизма обработки исключений.

Код:
<?
class MyClass
{
    function Divide($x, $y)
    {
        if ($y == 0)
        {
            throw new Exception("Cannot divide by zero");
        }

    return $x/$y;
    }
}

$Object = new MyClass();

try
{
    $Object->divide(3, 0);
}
catch (Exception $MyException)
{
    echo $MyException->getMessage() . "<br>\n";
}
?>

Вывод:
Cannot divide by zero

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

Код:
<?
class NewException extends Exception
{
    public $Message;

    function __construct($Message)
    {
        $this->Message = $Message;
    }
}

try
{
    throw new NewException("Couldn't connect to database");
}
catch (NewException $MyException)
{
    echo "Caught an NewException with problem: $MyException->Message";
}
catch (Exception $MyException)
{
    echo "Caught unrecognized exception";
}
?>

Вывод:
Caught an NewException with problem: Couldn't connect to database

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

Работа foreach со ссылками

В PHP4 нельзя было пройтись по массиву с помощью цикла foreach, изменяя его значения. В PHP5 разрешено использовать этот цикл, используя выбираемые из массива элементы по ссылке, добавив перед соответствующей переменной символ «&». Таким образом, появилась возможность изменять элементы исходного массива, меняя переменную текущего элемента.

Код:
<?
$Array = array(2, 0, 3, 1, 0, 2, 1, 4);

echo "Before: " . implode(", ", $Array) . "<br>\n";

foreach ($Array as &$Value)
{
    $Value = ($Value != 0)? 1 : $Value;
}

echo "After: " . implode(", ", $Array) . "<br>\n";
?>

Вывод:
Before: 2, 0, 3, 1, 0, 2, 1, 4
After: 1, 0, 1, 1, 0, 1, 1, 1

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

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

Код:
<?
function MyFunction(&$Argument = null)
{
    if ($Argument === null)
    {
        echo "Argument is empty";
    }
}

MyFunction();
?>

Вывод:
Argument is empty

XML и Web Services

Поддержка XML в PHP4 базировалась на разнообразных библиотеках XML. Поддержка SAX осуществлялась старой библиотекой Expat, для использования XSLT необходима была библиотека Sablotron, для DOM использовалась более мощная libxml2 – библиотека проекта GNOME.

В PHP5 все расширения XML были переписаны, чтобы использовать отличный набор инструментов, предоставляемый libxml2. Это библиотека богатая возможностями, отлично сопровождаемая и эффективно реализующая стандарты XML, предоставляющая передовые возможности технологий XML в PHP.

Все вышеупомянутые расширения: SAX, DOM и XSLT теперь используют libxml2, включая такие новые расширения, как SimpleXML и SOAP.

SAX

SAX является простым интерфейсом API для XML, предназначенным для обеспечения доступа к нужной информации без необходимости самомостоятельного создания специальных синтаксических анализаторов. Новая реализация SAX в PHP5 переведена от использования Expat к libxml2. Хотя новое расширение должно быть совместимо, могут быть некоторые тонкие различия.

DOM

DOM предоставляет программам доступ к хранящейся в XML-документе информации, как к иерархической объектной модели. Расширение DOM было полностью переписано для PHP5. Теперь оно соответствует рекомендациям W3C. Например, названия функций теперь используют нотацию studlyCaps (присваивание имен со смешанным употреблением заглавных и строчных букв) как предписано по стандарту W3C, Кроме того, новое расширение DOM поддерживает три вида схем для валидации XML документов – DTD, XML Schema и RelaxNG.

В результате этих изменений код, написанный для PHP 4 с использованием DOM, не всегда будет выполняться в PHP 5. Однако простая корректировка названий функций к новому стандарту в большинстве случаев должна решить проблему.

XSLT

XSLT является языком написания сценариев, оптимизированных для преобразования XML-документов. В PHP4, было два расширения, которые поддерживали XSL-преобразования. Первое использовало Sablotron, а второе – поддержку XSLT в расширении DOM. В PHP5 новое расширение XSL основано на использовании библиотеки libxml2.

SimpleXML

Расширение SimpleXML позволяет представить XML-документ как встроенный объект PHP. Благодаря этому можно читать, писать или организовывать циклы по XML-документу, получать доступ к элементам и атрибутам так же легко, как это осуществляется при работе с массивами PHP.

simplexml.xml:
<sample>
    <item id="1">
        <val>a</val>
        <val>b</val>
    </item>
    <item id="2">
        <val>A</val>
        <val>B</val>
    </item>
</sample>

Код:
<?
$sample = simplexml_load_file("simplexml.xml");

foreach ($sample->item as $item)
{
    echo $item["id"] . ", " . $item->val[0] . ", " . $item->val[1] . "<br>\n";
}
?>

Вывод:
1, a, b
2, A, B

В том случае, если есть необходимость сделать что-то, что невозможно выполнить в рамках SimpleXML, можно преобразовать объект SimpleXML в дерево DOM, вызвав функцию dom_import_simplexml(), выполнить необходимое, и вернуться назад к SimpleXML, используя simplexml_import_dom().

SOAP

SOAP (Simple Object Access Protocol) – это Простой Объектный Протокол Доступа, позволяющий объектам и web-сервисам взаимодействовать друг с другом в распределенной, децентрализованной web-среде. Приложение, которое хочет работать с некоторым web-сервисом, настраивается на него при помощи WSDL (Web Services Definition Language – язык описания Web-сервисов), который предоставляет низкоуровневую техническую информацию о желаемом сервисе, допускает обращение приложений к информации XML Schema для кодировки данных и гарантирует, что правильные операции будут осуществлены по правильным протоколам.

Поддержка SOAP в PHP4 реализовывалась с помощью ряда библиотек, написанных на PHP. Поддержка SOAP в PHP5 была полностью переписана как С-расширение и, хотя на текущий момент находится на последней стадии бета-тестирования, было решено включить в его стандартный дистрибутив, поскольку оно практически полностью реализует стандарт SOAP.

Следующий код показывает насколько просто работать с SOAP в PHP5 и демонстрирует вызов функции SomeFunction(), определенной в WSDL-файле.

Код:
<?
$Client = new SoapClient("service.wsdl");
$Client->SomeFunction($a, $b, $c);
?>

MySQLi (MySQL Improved)

В PHP5 для MySQL было написано новое расширение, которое позволяет полностью использовать преимущества новых функциональных возможностей в MySQL 4.1 и более новых версий. Новые возможности, поддерживаемые этим расширением, включают контроль транзакций, поддержку репликаций и SSL. MySQLi дает возможность использовать для работы с MySQL оба интерфейса: функциональный и объектно-ориентированный.

SQLite

SQLite – это встроенная библиотека SQL, которая не требует SQL сервера и подходит для приложений, которые не требуют масштабируемых SQL-серверов. Новая библиотека обладает значительным числом возможностей, среди которых поддержка транзакций, вложенные выборки, представления (view) и большие DB-файлы. Все данные одной базы данных SQLite хранятся в одном файле.

Следующий фрагмент кода демонстрирует создание такой базы данных и выбор из созданной в ней таблицы помещенного в нее значения.

Код:
<?
if ($Db = sqlite_open("mysqlitedb.msl", 0666, $SqliteError))
{
    sqlite_query($Db, "create table mytable (field varchar(10))");
    sqlite_query($Db, "insert into mytable values ('value')");
    $Result = sqlite_query($Db, "select field from mytable");

    print_r(sqlite_fetch_array($Result));
}
else
{
    die($SqliteError);
}
?>

Вывод:
Array ( [0] => value [field] => value )

Поддержка SQLite появилась еще в PHP 4.3.x, но у библиотеки SQLite в PHP5 появился новый объектно-ориентированный интерфейс и поддержка итераторов.

Tidy

PHP 5 включает поддержку очень полезной библиотеки Tidy. Она позволяет разбирать, диагностировать, чистить и восстанавливать документы HTML. Tidy расширение поддерживает как функциональный, так и объектно-ориентированный интерфейс, и ее API использует механизм исключений, появившийся в РНР5.

Следующий пример демонстрирует восстановление некорректного HTML кода с помощью библиотеки Tidy с использованием функционального интерфейса.

Код:
<?
$Code =
"<html>\n" .
"<head>\n" .
"<title>Title</title>\n" .
"</head>\n" .
"<body>\n" .
"<p>String</i>\n" .
"</body>\n" .
"</html>";

echo tidy_repair_string($Code);
?>

Вывод:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Title</title>
</head>
<body>
<p>String</p>
</body>
</html>

Perl

Расширение Perl позволяет вызывать Perl-скрипты, использовать объекты Perl и использовать другие функциональные возможности Perl-а прямо из кода PHP. По умолчанию оно не включено в PHP5. Это новое расширение можно найти в репозитории PECL.



Источник: dak.mmforce.net/message.php?mid=1521
Категория: PHP5 | Добавил: php (12.12.2007)
Просмотров: 4547 | Комментарии: 3
Всего комментариев: 3
05.11.2012
3. Cypegype [Материал]
you definitely love [URL=http://fakecoachpurses2.blogtrue.com/ - coach knockoff[/URL - to get new coupon CRBTcZSr [URL=http://fakecoachpurses2.blogtrue.com/ - http://fakecoachpurses2.blogtrue.com/ [/URL -

23.10.2012
2. Clinaimi [Материал]
order an [URL=http://www.replica--handbags.net/ - wholesale designer handbags[/URL - for more sQvdkvsN [URL=http://www.replica--handbags.net/ - http://www.replica--handbags.net/ [/URL -

18.10.2012
1. DiallJap [Материал]
best for you [URL=http://seattle-seahawks.net/marshawn-lynch-limited-black-game-jerseywhite-elite-men-jerseyred-youth-women-jer sey/ - marshawn lynch elite jersey[/URL - for more XWndYRRA [URL=http://seattle-seahawks.net/marshawn-lynch-limited-black-game-jerseywhite-elite-men-jerseyred-youth-women-jer sey/ - http://seattle-seahawks.net/marshawn-lynch-limited-black-game-jerseywhite-elite-men-jerseyred-youth-women-jer sey/ [/URL -

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

  • Денвер (Denwer)
  • PHP Compiler
  • Что такое Хостинг?
  • Что такое Сервер?
  • Установка Форума ExBB ( без MySQL )
  • Новые возможности языка
  • Новые возможности языка (2я часть)
  • Новые возможности языка (3я часть)
  • Macromedia Dreamweaver 4
  • Ошибки PHP программиста
  • Уроки и статьи по PHP, PHP5. Скрипты для сайта, скрипты форумов, новостные, cms. Инфо: . Скрипты для скачивания.
    Copyright VLP © 2020