php 获取网站访问统计信息的类Compete API用法

内容摘要
这篇文章主要为大家详细介绍了php 获取网站访问统计信息的类Compete API用法,具有一定的参考价值,可以用来参考一下。

对php获得网站访问统计信息的类Compete API对此感兴趣
文章正文

这篇文章主要为大家详细介绍了php 获取网站访问统计信息的类Compete API用法,具有一定的参考价值,可以用来参考一下。

对php获得网站访问统计信息的类Compete API对此感兴趣的朋友,看看idc笔记做的技术笔记!php获得网站访问统计信息的类Compete API,Compete是一个专门用来统计网站信息的网站

<?php
/**
 * 获得网站访问统计信息的类Compete API
 *
 * @param 
 * @author php教程 www.idcnote.com
 **/
// 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教程(www.idcnote.com)   ***/

注:关于php 获取网站访问统计信息的类Compete API用法的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!