CakePHP - Невозможно переопределить класс
У меня есть простой класс, который я добавил в папку компонентов, называется 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';
однако я получаю сообщение об ошибке:
Неустранимая ошибка: невозможно переопределить класс MetricsTracker в /Users/Hooman/Sites/askedout/app/controllers/components/mixpanel.php в строке 11
Почему это происходит? Я делаю то же самое с другим классом php, и он отлично работает. Это очень странно для меня, так как я нигде не повторяю обязательное определение. Пожалуйста, помогите, спасибо.
1 ответ
Решение
В коде вашего компонента, пожалуйста, измените код с
class MetricsTracker
в
class MetricsTracker extends Object
В коде вашего контроллера, пожалуйста, добавьте следующий код:
var $components=array('MetricsTracker');
Вместо того, чтобы использовать require()
функция