Как мне обработать несколько функций API для одного источника данных CakePHP? - PullRequest
1 голос
/ 20 августа 2010

Я использую CakePHP 1.3.Я успешно создал действительно DataSource и собираюсь создавать более сложные.Я смотрю на создание источника данных Yahoo ответы и интересовался несколькими лучшими методами.API предоставляет несколько функций:

1) Возможность поиска вопросов

2) Возможность получить вопросы в категории

3) Возможность получить подробную информацию о конкретномвопрос

4) Возможность получить подробную информацию о конкретном пользователе

Как есть, я могу использовать только функции вопросов и поиска пользователей.Вот мои вопросы:

  1. Создал ли я 1 источник данных, который может выполнять обе задачи или отдельные (т.е. один для поиска пользователей, а другой для поиска вопросов?

  2. Если я создаю 1 источник данных, то как мне определить, является ли модель $ this-> YahooUser-> find () (найти пользователей) против $ this-> YahooQuestion-> find () (найти вопросы), чтобы я могможет создать правильный URL для запроса.

1 Ответ

2 голосов
/ 21 августа 2010

Думайте о источнике данных как о базе данных. Например, CakePHP распространяется с несколькими базами данных (например, MySql, Oracle и т. Д.). Вам нужно создать источник данных YahooAnswers.

Вот пример в документации, чтобы показать вам, как создать источник данных Twitter, например: http://book.cakephp.org/view/849/An-Example

Это должно помочь вам реализовать API YahooAnswers в качестве источника данных.

ОБНОВЛЕНИЕ: Вот пример:

<?php 
pp::import('Core', 'HttpSocket');
class YahooAnswersSource extends DataSource {
    protected $_schema = array(
        'users' => array(
            'id' => array(
                'type' => 'integer',
                'null' => true,
                'key' => 'primary',
                'length' => 11,
            ),
            'name' => array(
                'type' => 'string',
                'null' => true,
                'key' => 'primary',
                'length' => 60
            ),
        ),
                'questions' => array(
            'id' => array(
                'type' => 'integer',
                'null' => true,
                'key' => 'primary',
                'length' => 11,
            ),
            'text' => array(
                'type' => 'string',
                'null' => true,
                'key' => 'primary',
                'length' => 140
            ),
        )
    );
    public function __construct($config) {
        $auth = "{$config['login']}:{$config['password']}";
        $this->connection = new HttpSocket(
            "http://{$auth}@yahooanswers.com/"
        );
        parent::__construct($config);
    }
    public function listSources() {
        return array('users','questions');
    }
...
?>
...