Şöyle bir genel Logger sınıfı vardır:
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();
...
}
...
}
Ve Log sınıfı:
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;
}
...
}
Yanı sıra LogMapper sınıf olarak:
class LogMapper extends DataMapper {
...
public static function create($row = false) {
return new Log($row);
}
public static function getById($id) {
...
}
}
Gördüğünüz gibi, ben Logger bir veritabanına kayıt yazmak için kullandığı diğer iki sınıfları, LogMapper ve Günlükler var.
Ben de önemli bir hata e-postaları bana oluşan bir mekanizması var. Ben bir düzine e-postalar hakkında aşağıdaki aldı:
Call to undefined method Log::setUserId()
Benim uygulama autoloading kullanır, ve ben ilk bu sorun olabilir, ama açıkça Logger sınıfı yüklenen ediliyor düşündüm ve bu yüzden autoloading kırmadı. Log sınıfı için yol robotun doğru ... ve açıkça Günlüğü sınıf yüklenmiş - aksi takdirde "Sınıf 'Log' bulunamadı" hata atılmış olurdu.
Herhangi bir fikir ne bu hataya neden olabilir? Ben sürüm hakkında eaccelerator kullanırım.