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

php获得网站访问统计信息类Compete API用法实例

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注