2014-08-04 2 views
0

У меня есть некоторый код, из которых работает только на одном посту, однако я хочу работать на всех постах не только тот, который был в списке я получаю следующее сообщение об ошибке:Share Counter работает только на одном посту?

(Фатальная ошибка: Невозможно переопределить класс shareCount в счетчик/доля-count.php в строке 3)

loop.php (это из моего кода петли для по почте)

<? 
require("counter/share-count.php"); 
$obj=new shareCount("http://google.com"); 
echo "Tweets: ".$obj->get_tweets(); 
echo "<br>Facebook: ".$obj->get_fb(); 
echo "<br>Google+: ".$obj->get_plusones(); 
?> 

доля-count.php (это файл тот исполняемый по запросу)

<? 
class shareCount { 
private $url,$timeout; 
function __construct($url,$timeout=10) { 
$this->url=rawurlencode($url); 
$this->timeout=$timeout; 
} 

function get_tweets() { 
$json_string = $this->file_get_contents_curl('http://urls.api.twitter.com/1/urls/count.json?url=' . $this->url); 
$json = json_decode($json_string, true); 
return isset($json['count'])?intval($json['count']):0; 
} 

function get_fb() { 
$json_string = $this->file_get_contents_curl('http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls='.$this->url); 
$json = json_decode($json_string, true); 
return isset($json[0]['total_count'])?intval($json[0]['total_count']):0; 
} 

function get_plusones() { 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc"); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"'.rawurldecode($this->url).'","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json')); 
$curl_results = curl_exec ($curl); 
curl_close ($curl); 
$json = json_decode($curl_results, true); 
return isset($json[0]['result']['metadata']['globalCounts']['count'])?intval($json[0]['result']['metadata']['globalCounts']['count']):0; 
} 

private function file_get_contents_curl($url){ 
$ch=curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout); 
$cont = curl_exec($ch); 
if(curl_error($ch)) 
{ 
die(curl_error($ch)); 
} 
return $cont; 
} 
} 
?> 
+0

Пожалуйста, форматировать Ваш код! – idmean

ответ

0

Ваш включенный файл counter/share-count.php определяет класс shareCount каждый раз, когда он включен, поэтому вы видите ошибку. Вы можете исправить это, используя require_once() или проверить, не определено ли класс с помощью class_exists() и определяет его только в том случае, если результатом является false.

Использование require_once() заменить require():

require_once("counter/share-count.php"); 
// ... rest of your code 

Использование class_exists():

if (! class_exists('shareCount')): 
class shareCount{ 
    // your class implementation 
} 
endif; // class_exists 
+0

Пожалуйста, см. Мне другой ответ, я пытаюсь заставить URL-адрес работать для каждого сообщения сейчас – user3348182

+0

Получил все это, но потому, что я должен называть его из другого документа на веб-сайте, его сбой на веб-сайте, есть способ вызывать его на самой веб-странице, не вызывая ее из другого документа? – user3348182

Смежные вопросы