Hata Modeli (MVC) içinde ele alma

3 Cevap php

Ben hariç, standart model hataları işlemek için ne olduğunu merak ediyorum.

Şu anda 'SETERROR' ve tüm modeller tarafından kullanımda bulunuyor 'getError' yöntemleri var.

Bu sadece benim Modeli'nde bir yönteme bir çağrı doğru veya yanlış olup olmadığı ile ilgilidir anlamına geliyor. False ise o zaman benim Controller $this->model->getError() kullanmak istiyorsunuz.

Ayrıca ben bütün hataları içeren ayrı bir dosya kurma niyetindeyim. Model başına bir dosya da bu düşünceler var istedim.

3 Cevap

Basit bir çözüm kullanmak olacaktır exceptions.

Bir hata ki bir kullanıcıya gösterilecek bir şey olurdu oluştuğunda, bir istisna özel bir tür atmak - belki adında UserError. Bunu atmak zaman durum hata mesajının metnini içermelidir. Hataları bu tür vardır features hangi yararlı bilgiler sunmak (yani var olmayan bir şey silmek için çalıştı - onlar gibi açık birden fazla tarayıcı, varsa olabilir ki)

örneğin:

throw new UserError("That object no longer exists.");

Bir hata kullanıcıdan gizlemek istediğiniz oluştuğunda, belki adında, istisna farklı bir tür atmak InternalError. Sen log Bu istiyorum ve programın devam etmesine izin, böylece belirli bir hata kullanıcıdan gizlenir olacaktır. Oluyor bir şey engeller ise, genel bir hata mesajı kusmak isteyebilirsiniz. Bunlar olacak bugs ve en kısa sürede onları düzeltmek istiyorum.

örneğin:

throw new InternalError("Failed to connect to remote service");

Hata iletileri tüm istisnası atılır kaynağında (kodlanmış) saklanabilir. Bu mutlaka kötü bir tasarım uygulama değil - gettext, kolayca bu mesajları bütün çevirebilir gibi bir araç kullanıyorsanız.

Ben log4j ve log4cxx kullanarak ve syslogd'nin için oturum oldum. Kiwi sizin günlük iletileri izlemek ve bunları bir dosyaya kaydedebilirsiniz basit bir Win32 syslogger olduğunu. Log4j / log4cxx kurulum için tüm günlük düzeyleri kullanabilir veya (eğer birden fazla yerde oturum açabilirsiniz) mesajı hedefleri oturum açabilirsiniz yapılandırma dosyaları var.

Bu kurulum ve kullanım için çok az çaba gerektirir ve bu bir cazibe gibi çalışır.

I log4php kendim denemedim.

Artık program yürütme devam etmek istediğinizde İstisnalar iyi. Eğer başarısız infaz fall-out kabul edebilir yüksek düzeyde istisnaları yakalamak.

Nihai bir karar vermeden önce doğrulama rutinleri oluşturmak için nasıl NerdDinner öğretici gözden geçirin:

http://nerddinnerbook.s3.amazonaws.com/Part3.htm

Doğrulama kısmı yaklaşık 2/3 sayfa aşağı yol olduğunu.