我正在使用CakePHP 1.3。我已成功创建了一个Indeed DataSource,我正在寻找创建更复杂的数据源。我正在研究创建一个Yahoo Answers数据源,并想知道一些最佳实践。 API公开了一些功能:
1)能够搜索问题
2)能够在类别中获得问题
3)能够获得特定问题的详细信息
4)能够获得特定用户的详细信息
原样,我可能只使用问题和用户搜索功能。以下是我的问题:
我是否创建了1个可以执行任务或单独任务的数据源(即一个用于查找用户而另一个用于查找问题?
如果我创建1个DataSource,那么如何识别模型是否为$ this-> YahooUser-> find()(查找用户)vs $ this-> YahooQuestion-> find()(找到问题)这样我就可以为请求创建正确的URL。
答案 0 :(得分:2)
将数据源视为数据库。例如,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');
}
...
?>