ФорумПрограммированиеPHP для идиотов → Zend Framework - Свой плагин ресурса

Zend Framework - Свой плагин ресурса

  • xq

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 18 января 2011 г. 7:11

    Создал свой плагин ресурса для работы с классом Realplexor, с помощью него можно обмениваться сообщениями между несколькими клиентами, он хорошо подходит для чата. Прописал для этого плагина настройки в application.ini. В контроллере для теста пишу следующий код:

    $realplexorObject = Zend_Registry::get('realplexor');
    print_r ($realplexorObject);
    die ();


    Выдает он следующее:

    Dklab_Realplexor Object
    (
    [_timeout:Dklab_Realplexor:private] => 5
    [_host:Dklab_Realplexor:private] => rpl.newchat.com
    [_port:Dklab_Realplexor:private] => 10010
    [_identifier:Dklab_Realplexor:private] => identifier
    [_login:Dklab_Realplexor:private] =>
    [_password:Dklab_Realplexor:private] =>
    [_namespace] => Chat_
    )


    т.е. объект Dklab_Realplexor создался и хранится в Zend_Registry, но, что бы с ним работать я хочу написать для него модели со специфическими методами для моего проекта, которые должны использовать методы класса Dklab_Realplexor, как именно это сделать?

    Пробовал писать модель вот так:

    class Application_Model_Realplexor_Message extends Dklab_Realplexor
    {
    public function __construct() {
    // Возвращаем объект реалплексора, который был создан как плагин ресурса
    return Zend_Registry::get('realplexor');
    }

    // отправка сообщения в канал "Alpha"
    public function post ($text, $fromUser = 0, $fromOperator = 0) {
    $this->send("Alpha", $text);
    }
    }


    Но, при создании объекта этой модели в контроллере она почему то становится не инициализированная:

    $realplexorMessageModel = new Application_Model_Realplexor_Message();
    print_R ($realplexorMessageModel);
    die ();


    выдает:

    Application_Model_Realplexor_Message Object
    (
    [_timeout:Dklab_Realplexor:private] => 5
    [_host:Dklab_Realplexor:private] =>
    [_port:Dklab_Realplexor:private] =>
    [_identifier:Dklab_Realplexor:private] =>
    [_login:Dklab_Realplexor:private] =>
    [_password:Dklab_Realplexor:private] =>
    )


    Хотелось бы сделать этот плагин ресурса и модели к нему по такому же принципу как делаются модели для уже имеющегося в ZF плагина ресурсов для базы данных.
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 18 января 2011 г. 8:38, спустя 1 час 27 минут 37 секунд

    Каждый реализует модели в ZF по-своему. Я думаю, один из способов решения вашей проблемы может быть такой:


    <?php
    class Application_Services_RealplexorService implements ServiceInterface
    {
       private $realPlexor = null;

       public function __construct()
       {
           $this->realPlexor = new Dklab_Realplexor(); // creating realPlexor object
       }
       
       public function post($param1, $param2)
       {
           $this->realPlexor->send($param1, $param2);
       }
    }


    А сам сервис уже хранить в реестре. В любом случае нарастет большая обертка над вашем реплексором. И правда не понимаю, почему сразу не использовать Dklab_Realplexor как модель?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!