2
我正在重建的网站使用自己的API来收集其大部分内容(例如http://api.example.com/)。尽管对此的回答很自我解释,但我只想在继续之前确定。在页面上包含API的最有效方式是什么?
据我所知,我有2(可能是3)通过PHP从API加载数据的选项。
- 我的类装入文件,并从类(可能是最好的方式手动收集数据,但需要更多的代码,如果更改了类所做的,我一定要改变页面和API文件而不是仅仅改变API)
- 使用
file_get_contents('http://api.example.com/search')
。这将是最简单的方法,但它需要另一个HTTP请求,我认为它稍慢。 - 最后,如果这可能,那么我认为这将是最好的方式,但就我所知,我不认为这是可能的。使用
$_GET
参数在本地读取文件,并以此方式获得结果。
例
1.
// Include the mysql connections
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_connections/mysql.company.php');
// Include the Classes (Company and Facebook)
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_classes/class.company.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_classes/class.mysql.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_facebook/config.facebook.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_facebook/class.facebook.php');
// Create the objects (Company, MySQL, Memcache and Facebook)
$memcache = new memcache;
$facebook = new Facebook($facebook_config);
$mysql = new mysql($memcache);
$company = new company($_DATABASES,$_CONNECTIONS,$mysql,$memache,$facebook);
// CALL THE RELEVANT CLASS METHOD HERE
2. 喜欢的东西(忽略错误)
$API = 'http://api.example.com/search?query=test'
$data = file_get_contents(url_encode($API));
3. 不知道这是可能的,请注意我不想使用最后一种方法
$parameters = array(
'method'=>'GET',
'parameters'=>array(
'function'=>'search',
'query'=>'test'
)
);
$API = some_cool_function('/_scripts/api/2/api/api.php',$parameters);
// I DO NOT WANT TO DO THIS FOR CERTAIN REASONS:
$_GET=array(
'function'=>'search',
'query'=>'test'
);
$data = include('/_scripts/api/2/api/api.php');
感谢您的意见。那么第三个选项是不可能的? – 2012-02-25 19:37:58
我想这取决于api.php中的内容 - 但只是手动填充$ _GET并不是很好的做法。方法2和方法3看起来简单而优秀,但实际上它们可能会老化很严重,并且导致您无法顺利解决问题。通过一个可以简单更新的类,您几乎不需要更改方法调用等。另外,您会将所有内容都粘贴到$ data中 - 如果它不是一个真的很奇怪的对象。 – BenOfTheNorth 2012-02-25 19:50:33
api.php只是返回一个由API函数产生的JSON编码的字符串,这就是为什么给出$ data的结果。我完全同意设置$ _GET参数,然后包括一个文件是不好的做法,这是可怕的做法! – 2012-02-25 19:58:25