У меня есть общий класс Logger, который выглядит следующим образом:
class Logger {
...
public function add($userId, $siteId, $logTypeId, $message) {
$Log = LogMapper::create();
$Log->setUserId($userId);
$Log->setSiteId($siteId);
$Log->setLogTypeId($logTypeId);
$Log->setMessage($message);
$Log->save();
...
}
...
}
И Журнал класса:
class Log {
public function setUserId($userId) {
if ($this->userId !== $userId) {
$this->userId = $userId;
}
return $this;
}
public function getUserId() {
return $this->userId;
}
public function setSiteId($siteId) {
if ($this->siteId !== $siteId) {
$this->siteId = $siteId;
}
return $this;
}
public function getSiteId() {
return $this->siteId;
}
...
}
А также класс LogMapper:
class LogMapper extends DataMapper {
...
public static function create($row = false) {
return new Log($row);
}
public static function getById($id) {
...
}
}
Как видите, у меня есть два других класса, LogMapper и Log, которые Logger использует для записи записей в базу данных.
У меня также есть механизм, который отправляет мне электронное письмо при возникновении фатальной ошибки. Я получил примерно десять писем:
Call to undefined method Log::setUserId()
Мое приложение использует автозагрузку, и я сначала подумал, что это может быть проблемой, но очевидно, что класс Logger загружается, и поэтому автозагрузка не нарушена. Путь к классу Log является правильным в автозагрузчике ... и, очевидно, класс Log был загружен - в противном случае возникла бы ошибка "Class 'Log' not found".
Есть идеи, что может быть причиной этой ошибки? Я использую eAccelerator в релизе.