Я использую CakePHP 1.3. Я успешно создал действительно DataSource и собираюсь создавать более сложные. Я смотрю на создание источника данных Yahoo ответы и интересовался несколькими лучшими методами. API предоставляет несколько функций:
1) Возможность поиска вопросов
2) Возможность получать вопросы в категории
3) Возможность получить подробную информацию по конкретному вопросу
4) Возможность получить вопросы подробности о конкретном пользователе
Как есть, я мог бы использовать только функции поиска вопросов и пользователей. Вот мои вопросы:
Я создал 1 источник данных, который может выполнять обе задачи или отдельные (то есть один, чтобы найти пользователей, а другой, чтобы найти вопросы?
Если я создаю 1 источник данных, то как мне определить, является ли модель $ this-> YahooUser-> find () (найти пользователей) против $ this-> YahooQuestion-> find () (найти вопросы), чтобы я мог создать правильный URL для запроса.
Думайте об источнике данных как о базе данных. Например, CakePHP распространяется с несколькими источниками данных для конкретных баз данных (например, MySql, Oracle и т. Д.). Вам нужно создать источник данных YahooAnswers.
Вот пример из документации, показывающий, как создать источник данных Twitter, например: http://book.cakephp.org/view/849/An-Example
Это должно помочь вам реализовать YahooAnswers API в качестве источника данных.
ОБНОВЛЕНИЕ: Вот пример:
<?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');
}
...
?>