php使用curl获取Compete统计网站信息的方法-Metrics

PHP实现懒加载的方法php实现加载_PHP教程

php构造方法中析构方法在继承中的表现,php构造本文为大家分享了php构造方法之析构方法在继承中的表现,供大家参考,具体内容如下 子类中没有定义构造方法时,会自动调用父类的构造方法。因此实例化子...

这篇文章主要介绍了php获得网站访问统计信息类Compete API用法,实例分析了php使用curl获取Compete统计网站信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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基于curl发送post、get请求及操作cookie

php通过新浪乐库搜索接口查询歌曲的功能

php动态创建文件夹及文件上传的方法

以上就是php使用curl获取Compete统计网站信息的方法的详细内容,更多请关注php中文网其它相关文章!

php构造方法中析构方法在继承中的表现,php构造_PHP教程

php构造方法中析构方法在继承中的表现,php构造本文为大家分享了php构造方法之析构方法在继承中的表现,供大家参考,具体内容如下 子类中没有定义构造方法时,会自动调用父类的构造方法。因此实例化子...

php中的常用魔术方法汇总,php魔术汇总_PHP教程

php中的常用魔术方法汇总,php魔术汇总这篇文章详细的对php中的常用魔术方法进行了整理归纳,分享给大家供大家参考,具体内容如下 1、PHP把所有”__”开头的方法当做魔术方法,所以任何自定义的方法都不...

PHP类实例教程:abstract类和abstract方法

可以使用abstract来修饰一个类或者方法。用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。抽象类不能被实例化。抽象方法是只有方法声明,而没有方法的实现内容。...

字符无乱码介绍

php按字符无乱码截取中文的方法,本文实例讲述了php按字符无乱码截取中文的方法。分享给大家供大家参考。具体实现方法如下: $str的字符个数,造成无谓的while循环,($offset1. php按字符无乱码截取中文的方法,_PHP...

推荐10款快递信息源码(收藏)

PHP查询快递信息的方法,PHP快递信息方法本文实例讲述了PHP查询快递信息的方法。分享给大家供大家参考。具体如下: 这里使用快递100物流查询 官方文档中只能返回html的接口 也可以返回json php代码如下: 复制代码 代码如下:/...

PHP 魔术方法(所有的魔术方法),php魔术方法所有_PHP教程

PHP 魔术方法(所有的魔术方法),php魔术方法所有慢慢长寻夜,明月高空挂。 目前PHP所有的魔术方法有一下这些 __construct() __destruct() __call() __callStatic() __get() __set() __isset() __unset() __sl

魔术方法的定义与用法汇总

...性赋值(private,protected,不存在)时,php就会执行__set()方法。上面我们说了__set()的作用是:在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。这个是什么意思呢。比如说,我们还是以上面的实例为例...

PHP 魔术方法 PHP 类中的魔术方法

定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法。分类: 例如:构造方法:__construct;析构方法:__destruct;动态重载:__set()、__get()、__call()、__callStatic();对象的克隆:__clone

推荐10个防止sql注入方法

...字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下:?123$sql= "select count(*) asctr from users where username='".mysql_real_escape_string($username)."

php常见的魔术方法详解,php魔术详解_PHP教程

php常见的魔术方法详解,php魔术详解 php规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。 PHP中的魔术方法有 :__construct, __destruct , _...