php获得网站访问统计信息类Compete API用法实例 |
|
本文实例讲述了php获得网站访问统计信息类Compete API用法 。分享给大家供大家参考 。具体如下: 这里使用php获得网站访问统计信息类Compete API,Compete是一个专门用来统计网站信息的网站
<?php
// Check for dependencies
if (!function_exists(curl_init))
throw new Exception(Compete needs the CURL PHP extension.);
if (!function_exists(json_decode))
throw new Exception(Compete needs the JSON PHP extension.);
/**
* Base Compete exception class.
*/
class CompeteException extends Exception {}
/**
* Represents Compete API.
* @author Egor Gumenyuk (boo1ean0807 at gmail dot com)
* @package Compete
* @license Apache 2.0
*/
class Compete
{
/**
* Default usr agent.
*/
const USER_AGENT = Compete API wrapper for PHP;
/**
* Base url for api calls.
*/
const API_BASE_URL = http://apps.compete.com/sites/:domain/trended/:metric/?apikey=:key;
/**
* Masks for url params.
*/
private $_urlKeys = array(:domain, :metric, :key);
private $_apiKey;
/**
* For url cleaning.
*/
private $_toSearch = array(http://, www.);
private $_toReplace = array(, );
/**
* List of available metrics.
*/
private $_availableMetrics = array(
// Description Auth type
uv, // Unique Visitors Basic
vis, // Visits Basic
rank, // Rank Basic
pv, // Page Views All-Access
avgstay,// Average Stay All-Access
vpp, // Visits/Person All-Access
ppv, // Pages/Visit All-Access
att, // Attention All-Access
reachd, // Daily Reach All-Access
attd, // Daily Attention All-Access
gen, // Gender All-Access
age, // Age All-Access
inc, // Income All-Access
);
/**
* List of available methods for __call() implementation.
*/
private $_metrics = array(
uniqueVisitors => uv,
visits => vis,
rank => rank,
pageViews => pv,
averageStay => avgstay,
visitsPerson => vpp,
pagesVisit => ppv,
attention => att,
dailyReach => reachd,
dailyAttention => attd,
gender => gen,
age => age,
income => inc
);
/**
* Create access to Compete API.
* @param string $apiKey users api key.
*/
public function __construct($apiKey) {
$this->_apiKey = $apiKey;
}
/**
* Implement specific methods.
*/
public function __call($name, $args) {
if (array_key_exists($name, $this->_metrics) && isset($args[0]))
return $this->get($args[0], $this->_metrics[$name]);
throw new CompeteException($name . method does not exist.);
}
/**
* Get data from Compete.
* @param string $site some domain.
* @param string $metric metric to get.
* @return stdClass Compete data.
* @throws CompeteException
*/
public function get($site, $metric) {
if (!in_array($metric, $this->_availableMetrics))
throw new CompeteException($metric . - wrong metric.);
$values = array(
$this->_prepareUrl($site),
$metric,
$this->_apiKey
);
// Prepare call url
$url = str_replace($this->_urlKeys, $values, self::API_BASE_URL);
// Retrieve data using HTTP GET method.
$data = json_decode($this->_get($url));
// Because of unsuccessful responses contain "status_message".
if (!isset($data->status_message))
return $data;
throw new CompeteException(Status: . $data->status . . .$data->status_message);
}
/**
* Cut unnecessary parts of url.
* @param string $url some url.
* @return string trimmed url.
*/
private function _prepareUrl($url) {
return str_replace($this->_toSearch, $this->_toReplace, $url);
}
/**
* Execute http get method.
* @param string $url request url.
* @return string response.
*/
private function _get($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, self::USER_AGENT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
return curl_exec($ch);
}
}
希望本文所述对大家的php程序设计有所帮助 。 |