清单 1. 连接到 Foursquare 场所提要
require('lib/EpiCurl.php');
require('lib/EpiOAuth.php');
require('lib/EpiFoursquare.php');
$fsObj = new EpiFoursquare();
try{
$venues = $fsObj->get_basic('/venues.json',
array('geolat' => '30.268056',
'geolong' => '-97.741381',
'l' => '50'));
$venues_array = json_decode($venues->responseText);
}catch(Exception $e){
echo "Error: ". $e;
}
require('lib/EpiOAuth.php');
require('lib/EpiFoursquare.php');
$fsObj = new EpiFoursquare();
try{
$venues = $fsObj->get_basic('/venues.json',
array('geolat' => '30.268056',
'geolong' => '-97.741381',
'l' => '50'));
$venues_array = json_decode($venues->responseText);
}catch(Exception $e){
echo "Error: ". $e;
}
这不是非常复杂,获取场所提要和签入计数只用了 15 行代码。请注意,示例中的 geolat 和 geolong 坐标与奥斯汀市中心 Driskill Hotel 的邻近地区匹配 — 我将该场所作为一个便利的中心点,因为很多市中心场所都与它很接近。
创建一个 web 视图
此时,您拥有一个已经转化为 PHP 数据对象的 JSON 提要。这对于 PHP 程序员来说很有用,但对其他人几乎没有任何用处。您需要做的就是将这些内容嵌入到一个任何人都可以使用的 web 页面。
为此,在根目录中创建一个 index.php 文件。使用您感到舒适的任何 Cascading Style Sheets (CSS) 和 JavaScript 框架以及设计元素。例如,在 清单 2 所示的样例代码中,我使用了 960 Grid 框架,因为它能够让我的工作简单起来。另外还要包含您刚才编写的 feed.php 代码,然后处理 $venues_array 数组,以将其放入到数据表中。
复杂之处在于,Foursquare API 是分层次的,第一层(组)对您来说没有太大意义。您需要访问场所级别,因为您要在这里搜寻并提取有价值的信息供以后使用。
清单 2 中显示的部分示例提供一种简便方法来访问场所级别:foreach ($venues_array->groups[0]->venues as $v){ 在 PHP 数据对象中的正确位置开始循环,允许您访问 $v->name 项目来获取场所名称,访问 $v->stats->herenow 来获取场所目前的签入量。
事实上,如果您每次通过循环查看 $v 的数据结构,它有点像清单 2。