Новые библиотеки и другие нововведения PHP5 - PHP - Каталог статей - Программирование
Понедельник
21.05.2012, 02:36
Все для программирования!
Приветствую Вас Гость | RSS
Главная Каталог статей Регистрация Вход
Меню сайта

Категории раздела
Мои статьи [3]
Delphi [11]
С / С++ [1]
HTML [2]
CSS стили [20]
PHP [14]

Баннеры

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа
E-mail:
Пароль:

Главная » Статьи » PHP

Новые библиотеки и другие нововведения 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>

Источник: http://dak.mmforce.net

Категория: PHP | Добавил: hoas (08.10.2009)
Просмотров: 742 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Код *:
Поиск

Друзья сайта
  • Создать сайт
  • Все для веб-мастера
  • Программы для всех
  • Лучшие сайты Рунета

  • Праздники


    Copyright MyCorp © 2012
    Создать сайт бесплатно