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程序设计有所帮助 。 |