XML-RPC и Yii фреймворк

Последнее время фреймворк Yii набирает популярность. В основном благодаря интенсивному развитию и неплохому набору встроенных библиотек. Поэтому для меня было, немного удивительно, что в дистрибутиве не обнаружилось библиотеки для работы с XML-RPC.
Но, как оказалось, этот недостаток несложно исправить. Рассмотрим небольшой пример, получение нескольких записей из блога на движке WordPress с помощью XML-RPC запроса.
Шаг 1. Загружаем библиотеку для работы с XML-RPC.
Для этого примера я выбрал Incutio XML-RPC Library, главным образом потому, что её использует WP. Но, в принципе, это не важно. Возможно, вам больше понравится библиотека из ZF.
Загружаем библиотеку и сохраняем её в папке protected/vendors фреймворка (эту папку нужно создать). В данном случае библиотека состоит всего из одного файла IXR_Library.php.
Примечание. Учитывая, что библиотека маленькая, можно было её сохранить и в папке, protected/extensions, но, насколько я понял из официального руководства, данная папка предназначена для собственных расширений. Поэтому не будем путать их со сторонними разработками. Хотя разницы в подключении практически никакой.
Шаг 2. Подключаем библиотеку к фреймворку.
Тут есть нюансы. Если бы в нашей библиотеке каждый класс был объявлен в отдельном файле, и имя этого класса совпадало бы с именем файла, то можно было бы обойтись только методом Yii::import. Но в данном случае это не так, потому подключение выполняется следующим образом.
Yii::import('application.vendors.*');
require_once ('IXR_Library.php');
Метод import позволяет изменить относительный путь подключения PHP скриптов (используется функция set_include_path). application.vendors.* означает, что будут подключены все файлы, находящиеся в папке protected/vendors. Но, по-умолчанию, само подключение будет выполнено только при первом использовании классов.
Поэтому нам нужно сразу после вызова import использовать require_once. Иначе фреймворк будет пытаться найти файлы для каждого из классов библиотеки, а они все находятся в IXR_Library.php.
Если бы мы поместили библиотеку в папку protected/extensions, то изменился бы только путь подключения.
Yii::import('ext.*');
require_once ('IXR_Library.php');
Шаг 3. Использование.
Использовать библиотеку можно где угодно, в контроллерах, моделях, командах консоли, виджетах и т.п. Главное, не забыть её подключить.
Для нашего примера код будет такой.
$client = new IXR_Client('http://my_cool_wp_blog.com/xmlrpc.php');
$requestData[0] = 0; //id блога
$requestData[1] = 'user_name']; //имя пользователя
$requestData[2] = 'user_pass'; //пароль
$requestData[3] = 5; // количество записей, которые нужно получить
if (!$client->query('metaWeblog.getRecentPosts', $requestData)) {
throw new Exception('Get posts error: '.$client->getErrorMessage());
}
$data = $client->getResponse();
В данном случае я использовал MetaWeblog API. В конструкторе объекта IXR_Client указываем адрес XML-RPC сервера (для блогов на WP это файл xmlrpc.php, который находится в корне блога).
Затем формируем массив с параметрами и отправляем запрос с помощью метода query. В его первом параметре указываем имя функции, в данном случае это metaWeblog.getRecentPosts, которая возвращает список последних постов, а во втором – массив с параметрами.
Метод getResponse возвращает массив с результатами запроса, а getErrorMessage – описания ошибок, если они были.
Как видите, фреймворк позволяет подключить практически любую библиотеку и использовать её так, как описано в документации.
Если есть вопросы, советы или замечания, пишите, буду рад обсудить
Постовой
Сделали ремонт, но замена мебели выходит за рамки бюджета? Вам поможет замена обивки мягкой мебели. После этой процедуры на мебель будет приятно смотреть.
Понравилась статья? Подписывайтесь на продолжение
!
Добавьте эту страницу в
Tweet
Опубликовано в PHP, Web разработка, Yii Комментарии (34) »
Вы можете оставить комментарий. Трекбеки закрыты.
-
http://aktuba.ru/ aktuba
-
http://www.simplecoding.org/ Владимир
-
http://aktuba.ru aktuba
-
http://blog.bethrezen.ru/ Bethrezen
-
http://www.simplecoding.org/ Владимир
-
http://blog.bethrezen.ru Bethrezen
-
necros
-
http://www.simplecoding.org/ Владимир
-
necros
-
Zi
-
http://www.simplecoding.org/ Владимир
-
Zi
-
http://www.simplecoding.org/ Владимир
-
Владимир
-
http://www.simplecoding.org/ Владимир
-
Zi
-
Zi
-
Владимир
-
http://news.onru.ru/ Dolober
-
http://www.simplecoding.org/ Владимир
-
http://news.onru.ru/ Dolober
-
http://www.simplecoding.org/xml-rpc-i-yii-frejmvork.html Jenya
-
http://www.simplecoding.org/xml-rpc-i-yii-frejmvork.html Jenya
-
http://twitter.com/theBuCeFaL Denis Medved
-
http://www.nayjest.ru/ Nayjest (Виталий Степаненко)
-
http://www.nayjest.ru/ Nayjest (Виталий Степаненко)
-
http://www.simplecoding.org Владимир






