Framework yii : нужна помощь с проектировкой компонента

unsiker

Постоялец
Регистрация
6 Июн 2008
Сообщения
465
Реакции
173
Доброго времени суток, надеюсь есть специалисты по фреймворку Yii, которые могут помочь в данном вопросе. Итак суть дела
Нужно разработать компонент, который будет работать с базой фильма с одного сервиса. В связи с чем нужно написать реализацию. Данный компонент будет разбит на 2 файла с соответствующими класам (возможно их будет больше).
Первая часть будет осуществлять подключение к сервису.
PHP:
class EMovieConnect {
    function connect($conn_str, $user, $pass){...}
    function status(){...}
}

Вторая будет отсылать/принимать информацию.
PHP:
class EMovieCommand {
   function  searchMovie($str){...}
   function  lastMovie(){...}
}

Само подключение должно выглядеть следующим образом:
PHP:
'components'=>array(
    'movie'=>array(
        'class' => 'path.to.EMovieComponent',
        'user'  => 'user',
        'pass'  => 'password',

    ),
),
а работа с компонентом должна быть максимально простая
PHP:
Yii::app()->movie->connect();
Yii::app()->movie->search('my movie');

Подскажите как должен выглядеть код компонента?
так что б он включал и первый и второй клас,
Буду благодарен за любую помощь в этом вопросе
 
дкласс EMovieComponent делаешь наследником от CApplicationComponent
ну или главное чтоб компонент реализовывал интерфейс IApplicationComponent ( там посути 2 метода )

потом в файле класса EMovieComponent делаешь либо обычный импорт остальных классов/файлов
PHP:
require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'EMovieConnect.php';
  require_once dirname(__FILE__).DIRECTORY_SEPARATOR.'EMovieCommand.php';
 
class  EMovieComponent ...
{
   
}

либо инклюдишь через конфиг
PHP:
'import'=>array(
...
  'ext. EMovie.*',
...
),

собсно

Скрытое содержимое доступно для зарегистрированных пользователей!



ну а по коду либо в классе EMovieComponent делать метотоды-обертки для остальных классов аля
PHP:
class  EMovieComponent ...
{
   
    public function __constructor()
  {
          $this->connect = new EMovieConnect(...)
  } 
 
  public function conect()
{
    $this->connect->connect() ;
} 
}

либо волшебными методами как вот здесь реализовано
Скрытое содержимое доступно для зарегистрированных пользователей!




Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху