PHP topluluğu daha açıklayıcı İstisnalar kullanmaya başlamak gerekir?

1 Cevap php

Ben Zend Framework ile çok çalışmak ve ben sadece Kohana bir göz attık ve bu, bu çerçeveler tipik bir senaryo olduğunu bana tuhaf gelen:

throw Some_Components_Exception( 'invalid argument' );

Ben inanıyorum Nerede bu çok daha yararlı olmaz:

throw Some_Components_InvalidArgumentException( 'whatever discription' );

Bu yakalamak daha kolaydır çünkü.

Sanıyorum, ama hemen eski uygulama PHP toplumda yaygın olduğunu, bu önyargılı kabul ediyorsun. Biz PHP topluluğu, daha expections bu tanımlayıcı türlerini kullanmaya başlamak gerekir?

1 Cevap

Evet, SPL tarafından sağlanan İstisna alt tipleri kullanarak öneriyoruz. Bu farklı istisnalar farklı işlemek için (bir çerçevede ya da app ya) kodu çağırarak sağlar.

A DomainException Eğer kullanıcı rapor ve onlara verileri yeniden girmek için bir şans vermelidir ki, geçersiz kullanıcı girişi gösterebilir. A BadMethodCallException kodunuzda bir kusur gösterebilir ve bunu oturum ve bunu farklı bir şekilde işlemesi gerekir.

Ama bu farklı durum senaryoları istisna attı sınıf veya bileşeni ile ilgisi var. A BadMethodCallException muhtemelen bir MVC bileşen veya DB erişim katmanı olur olsun aynı şekilde ele alınmalıdır.

Ben onun 1.0 sürümü ile Zend Framework proje neden oldu. Ben istisna hiyerarşisini yeniden istedim ve ben her bileşen için bir tek istisna kullanmak için (önce benim projeye katılmadan) keyfi bir karar olduğunu düşündüm. Bu mantıklı değildi.

Ne yazık ki, istisnalar rearchitecting onun 1.0 sürümü bir kilometre taşı için ürün almak kadar önemli değildi. Ben Zend proje için belirlenen bu programa öncelik takip etmek, ve, özellik tam sürüme ertelenmiş gerekiyordu almak için kesinlikle gerekli değil hemen hemen her şeyi yapmak zorunda.