我有一个简单的类,我已经添加到components文件夹mixpanel.php中。在文件中是:
<?php
class MetricsTracker {
public $token;
public $host = 'http://api.mixpanel.com/';
public function __construct($token_string) {
$this->token = $token_string;
}
function track($event, $properties=array()) {
$params = array(
'event' => $event,
'properties' => $properties
);
if (!isset($params['properties']['token'])){
$params['properties']['token'] = $this->token;
}
$url = $this->host . 'track/?data=' . base64_encode(json_encode($params));
//you still need to run as a background process
exec("curl '" . $url . "' >/dev/null 2>&1 &");
}
}
?>
在users_controller.php中我做:
require 'components/mixpanel.php';
然而我收到了一个错误:
致命错误:无法在第11行的/Users/Hooman/Sites/askedout/app/controllers/components/mixpanel.php中重新声明类MetricsTracker
为什么会这样?我用不同的php类做同样的事情,它工作正常。这对我来说很奇怪,因为我没有在任何地方重复需求定义。请帮助,谢谢。
答案 0 :(得分:0)
在您的组件代码中,请更改
中的代码 class MetricsTracker
到
class MetricsTracker extends Object
在您的控制器代码中,请添加以下代码:
var $components=array('MetricsTracker');
而不是使用require()
函数