Самопознание

человеческий потенциал безграничен


  • Слова тут не причём.

  • О неизбежной победе национал-патриотов. часть-2

  • Сегодня хочу рассказать о использовании Zend_Rest. Если кратко, то REST - это довольно интересная альтернатива SOAP'у, более подробно я сравнивать не стану, так как в сети материала полно, а остановлюсь на использовании Zend_Rest_Client и Zend_Rest_Server.

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

    Клиент:

    $client = new Zend_Rest_Client('http://oauthserver.local/rest');
    $result = $client->sayHello('SaBo', 'Day')->get();

    if ($result->isSuccess()) {
        // В случае успешного выполнения
        echo $result; // "Hello SaBo! Good Day!"
    } else {
        // В случае ошибки
        echo $result; // "An Error Occurred"
    }
     

    Сервер:

    require_once 'Zend/Rest/Server.php';

    $server = new Zend_Rest_Server();
    function sayHello($who, $when) {
        return array(
                'response' => 'Hello ' . $who . '! Good ' . $when . '!',
                'message' => 'An Error Occurred',
                'status'  => TRUE
        );
    }
    $server->addFunction('sayHello');
    $server->handle();
     

    В нашем примере будет выведена надпись 'Hello, SaBo! Good Day!'. Если мы изменим на стороне сервера

    return array(
                'response' => 'Hello ' . $who . '! Good ' . $when . '!',
                'message' => 'An Error Occurred',
                'status'  => TRUE
     );
     

    на

    return array(
                'response' => 'Hello ' . $who . '! Good ' . $when . '!',
                'message' => 'An Error Occurred',
                'status'  => FALSE
    );
     

    То получим сообщение об ошибке: 'An Error Occurred'. Если вы вызовите незарегистрированный метод, получите сообщение об ошибке "Unknown Method 'sayHello'.".

    Кстати, ваша функция может возвращать в случае удачи только строку (return 'Hello ' . $who . '! Good ' . $when . '!';) или массив return array('response' => 'Hello ' . $who . '! Good ' . $when . '!', 'status'  => TRUE). В случае неудачи возможен вариант return array('message' => 'An Error Occurred', 'status'  => FALSE).

    Вернёмся к предыдущему примеру и посмотрим, что передаёт сервер клиенту, а что клиент серверу.

    Клиент -> Сервер:

    $_GET = Array
    (
        [method] => sayHello
        [arg0] => SaBo
        [arg1] => Day
        [rest] => 1
    )

    Сервер -> Клиент:

    <?xml version="1.0" encoding="UTF-8"?>
    <sayHello generator="zend" version="1.0"><response>Hello SaBo! Good Day!</response><message>An Error Occurred</message><status>1</status></sayHello>

    Важное уточнение! При запросе результата выполнения функции каждый раз создаётся новое соединение, то есть если написать такой код:

    $result   = $client->sayHello('Davey', 'Day')->get();
    $result2 = $client->setContent('text')->get();
     

    То будет создано два разных соединения!

    Кроме функций вы можете подключать классы:

    Клиент:

    require_once 'Zend/Rest/Client.php';
    $client = new Zend_Rest_Client('http://oauthserver.local/rest');

    $result = $client->sayHello('SaBo', 'Day')->get();

    if ($result->isSuccess()) {
        // В случае успешного выполнения
        echo $result; // "Hello SaBo! Good Day!"
    } else {
        // В случае ошибки
        echo $result; // "An Error Occurred"
    }
     

    Сервер:

    class MyClass {
        private $welcome = 'Hello';

        public function  __construct() {
            $this->welcome = 'Hi';
        }

        public function sayHello($who, $when) {
            return array(
                    'response' => $this->welcome . ' ' . $who . '! Good ' . $when . '!',
                    'message' => 'An Error Occurred',
                    'status'  => TRUE
            );
        }
    }

    require_once 'Zend/Rest/Server.php';
    $server = new Zend_Rest_Server();
    $server->setClass('MyClass');
    $server->handle();
     

    В результате увидим строку: "Hi SaBo! Good Day!".

    И напоследок хочу отметить, что если результатом выполнения вызываемой на сервере функции будет SimpleXMLElement, то клиенту уйдёт сгенерированный XML:

    Клиент:

    require_once 'Zend/Rest/Client.php';
    $client = new Zend_Rest_Client('http://oauthserver.local/rest');
    $result = $client->sayHello('SaBo', 'Day')->get();

    if ($result->isSuccess()) {
        // В случае успешного выполнения
        echo $result . '<br>' . "\n"; // "Hi SaBo! Good Day!"
        echo $result->data; // "Text data."
    } else {
        // В случае ошибки
        echo $result; // "An Error Occurred"
    }
     

    Сервер:

    class MyClass {
        private $welcome = 'Hello';

        public function  __construct() {
            $this->welcome = 'Hi';
        }

        public function sayHello($who, $when) {
            $xml ='<?xml version="1.0" encoding="UTF-8"?>
                <rest>
                    <sayHello generator="zend" version="1.0">
                        <response>' . $this->welcome . ' ' . $who . '! Good ' . $when . '!</response>
                        <message>An Error Occurred</message>
                        <status>1</status>
                    </sayHello>
                    <data>
                        Text data.
                    </data>
                </rest>';
            return simplexml_load_string($xml);
        }
    }

    $server = new Zend_Rest_Server();
    $server->setClass('MyClass');
    $server->handle();
     

    Вот, пожалуй, и всё :)



























































































  • Слова тут не причём.

  • О неизбежной победе национал-патриотов. часть-2






  • Последние новости


    Дружба

    Все жизненные проблемы приносят с собой золотые самородки мудрости, обнаружить которые помогает истинная дружба. Вы замечали, что есть люди, которые дают вам силы, поднимают настроение и вызывают желание находиться рядом? И те, кто стремится вытянуть из вас энергию, надоедает вам и делает все так, что хочется сбежать. Нас подде...
    Читать далее »

    Советы, способствующие успеху

    ВЫЯВЛЕНИЕ ЦЕННОСТЕЙ Правильный выбор – Это результат жизни в соответствии со своими высшими ценностями, то есть путь к лучшей жизни. ЖИЗНЕННАЯ ЦЕЛЬ Лучшие люди выбирают цель, которая затрагивает лучшие струны в других. МИССИЯ Жизнь нельзя прожить дважды. Теперь или никогда, поэто...
    Читать далее »

    Утренние вопросы

    Если бы мне осталось жить всего месяц, что бы я делал из того, что делаю сегодня? Что я сделаю сегодня, чтобы почувствовать себя счастливым? Какие прекрасные воспоминания останутся у меня в памяти сегодня? Какие убеждения сделали мою жизнь такой, какая она есть? Во что нужно поверить, чтобы прожить удивительную жизнь? ...
    Читать далее »

    И еще несколько вопросов

    Знать мысли Бога – все равно что знать, как преуспеть в жизни. Глубоко поразмыслив над вопросами этой книги и записав свои ответы в дневник, вы развили в себе привычку анализировать. Поздравляю! Это важнейший навык успешной жизни. Способность к самоанализу и постановке правильных вопросов наряду с пониманием того, как использовать интуицию и природную мудрость, изменит нап...
    Читать далее »

    Путешествия

    Поставьте перед собой цель жить полноценно. Самый печальный итог – оглянуться назад и вопрошать, что можно было бы иметь, если бы… Дорожите своими заветными мечтами, воплощая их в жизнь. Ах, путешествия… Большинство из нас любят путешествовать и страстно стремятся к этому. Мы тоскуем по приключениям в реальной жизни. Хотим посетить удаленные места, узнать культуры, не...
    Читать далее »

    Счастье

    Там, где жизнь бьет ключом, где оживленно и весело, там и ищите свое счастье. Моя шестилетняя внучка Элла однажды зашла в мой офис и уселась в кресло. Она давно слышала, что я занимаюсь коучингом, поэтому я спросил ее: «Не хочешь побыть сегодня тренером и немного поучить других?» Малышка посмотрела на меня, выпрямилась в кресле, и я понял: она готова. Элла спросила: – О ч...
    Читать далее »

    Взаимоотношения

    Любовь Магия Бога выражается через любовь; наивысшая форма любви – бескорыстная помощь другим. Вы когда нибудь смотрели в глаза новорожденного и ощущали восторг, который ребенок приносит в этот мир? Большинство из нас чувствуют исходящую от детей любовь. Мы являемся в мир с любовью и открытым сердцем. С самого детства мы отдаем свою любовь этому миру. Из л...
    Читать далее »

    Ваш комментарий:


    Вы должны войти в систему, чтобы оставить комментарий.