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

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


Основные изменения в РНР

XML и Web Services

После изменений, касающихся самого языка, изменения в работе с XML в PHP 5 являются, вероятно, самыми существенными и захватывающими. Расширение функциональных возможностей XML в PHP 5 делают язык полностью равноправным другим, используемыми в сети.

Основы

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

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

В PHP 5 все расширения XML были переписаны, чтобы использовать отличный набор инструментов, предоставляемый libxml2 (http://www.xmlsoft.org/). Это библиотека богатая возможностями, отлично сопровождаемая и эффективно реализовавшая стандарты XML, предоставляющая передовые возможности технологии XML в PHP.

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

SAX

Как говорилось выше, новая реализация SAX переведена от использования Expat к libxml2. Хотя новое расширение должно быть совместимо, могут быть некоторые тонкие различия. Разработчики, которые хотят продолжать работать с библиотекой Expat, могут это сделать, конфигурируя и собирая PHP соответствующим образом (не рекомендовано).

DOM

Хотя поддержка DOM в PHP 4 была также основана на библиотеке libxml2, она изобиловала ошибками, грешила утечками памяти, и API во многих случаях не соответствовал рекомендациям W3C. Расширение DOM было полностью переписано для PHP 5. Мало того, что расширение было коренным образом переписано, теперь оно соответствует рекомендациям W3C. Например, названия функций теперь используют нотацию studlyCaps (присваивание имен со смешанным употреблением заглавных и строчных букв) как предписано по стандарту W3C, облегчая для вас применение прочитанного в документации W3C в PHP. Кроме того, расширение DOM теперь поддерживает три вида схем для валидации XML документов - DTD, XML Schema и RelaxNG.

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

XSLT

В PHP 4, было два расширения, которые поддерживали XSL-преобразования. Первое использовало Sablotron, а второе - поддержку XSLT в расширении DOM. В PHP 5 новое расширение XSL было основано на использовании libxml2. Так, в PHP 5 XSL-преобразование не принимает таблицу стилей XSLT в качестве параметра, но зависит от расширения DOM, чтобы загрузить ее. Таблица стилей может кэшироваться в памяти, и может быть применена ко многим документам для существенной экономии времени выполнения.

SimpleXML

Вероятно, через год или два, оглянувшись назад, мы сможем сказать, что SimpleXML коренным образом изменил работу с XML-документами для PHP разработчиков. SimpleXML можно было бы действительно называть "XML для чайников". Вместо того, чтобы иметь дело с DOM или, что еще хуже, SAX, SimpleXML позволяет представить ваш XML-документ как родной объект PHP. Вы можете читать, писать или пробегаться по вашему XML-документу, с легкой непринужденностью получая доступ к элементам и атрибутам.

Рассмотрите следующий XML-документ:

<clients>
<
client>
    <
name>John Doe</name>
    <
account_number>87234838</account_number>
</
client>
<
client>
    <
name>Janet Smith</name>
    <
account_number>72384329</account_number>
</
client>
</
clients>

Следующий фрагмент кода печатает имя каждого клиента и номер его аккаунта:

<?php
$clients
= simplexml_load_file('clients.xml');
foreach (
$clients->client as $client) {
    print
"$client->name has account number $client->account_number ";
}
?>

Как видим, SimpleXML действительно прост.

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

SOAP

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

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

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

<?php
$client
= new SoapClient("some.wsdl");
$client->SomeFunction($a, $b, $c);
?>