Matthew Weier O’Phinney опубликовал краткое руководство по созданию SOAP, XML-RPC, JSON-RPC или AMF API на базе Zend Framework.
Я знал, что через ZF это сделать просто, но, оказалось, даже проще, чем я думал. Например, вот так выглядит создание XML-RPC-сервера:

1
2
3
$server = new Zend_XmlRpc_Server();
$server->setClass('My_Awesome_Api');
echo $server->handle();

Также не следует использовать для этих целей полноценный MVC — просто незачем проходить полный цикл диспатчеризации, если можно заменить его куда более производительным сервис-сервером:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class XmlRpc_Bootstrap extends Bootstrap
{
    public function run()
    {
        $server = new Zend_XmlRpc_Server();
        $server->setClass('My_Awesome_Api');
        echo $server->handle();
    }
}

$app = new Zend_Application(
    APPLICATION_ENV,
    array(
        'bootstrap' => array(
            'class' => 'XmlRpc_Bootstrap',
            'path'  => 'path/to/Bootstrap.php',
        ),
        'config' => APPLICATION_PATH . '/configs/application.ini',
    ),
);
$app->bootstrap()
    ->run();

Подробности читайте в оригинале статьи.

4 Comments

  1. Дима says:

    спасибо за перевод,
    но вот не понятно как правильно реализовывать My_Awesome_Api, так как в нем не доступна вся архитектура классов ZF, вот он скорее всего это будет наследник от модели, как в данном случае правильно провести подсоединение к БД?

  2. Сергей Митрошин says:

    В My_Awesome_Api будут доступны все классы ZF. Подсоединение к БД производится через application.ini или в классе XmlRpc_Bootstrap.

  3. Дима says:

    а где в вашем примере лежит My_Awesome_Api?

  4. Сергей Митрошин says:

    В примере он не лежит нигде :)
    Но вообще он должен лежать в library/My/Awesome/Api.php – следуя схеме именования классов PEAR/ZF.

Leave a Reply