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