nesnelerin karmaşık sonuçları ile ilgili -

3 Cevap php

Bir nesne ile fonksiyonlar karmaşık sonuçlar işleme genel yolu nedir? Basit bir yöntem doğru veya yanlış döndürebilir, ve bilmem gereken tüm olacaktır. Daha karmaşık bir yöntem (birkaç nedeni olabilir) doğru veya yanlış dönüş olabilir, ama ben böyle neden başarısız gibi sınıf, çıkmak isterim daha fazla bilgi olabilir.

Ben bir istisna ile yapabilirdi, ama "normal" işlevleri için bir istisna kullanarak iyi bir uygulama olmadığını, bazı yerlerde okudum. Ben nesneyi kullanmaya devam etmek istiyorsanız bir istisna atma nesnesini yok Ayrıca beri, onunla başka bir şey yapamaz, bu yüzden bir istisna işe yaramaz. Bu şeyler beklenen, kurtarılabilir hata, gerçekten yanlış değilken bir istisna atılır gerektiğini bana görünüyor.

Yani, bu başka bir yol bir yöntem çalıştırmak sonra bir sonuç özelliğine sahip olduğunu, ve bu yöntem döndürür false ise, ben bunun için sonuç devletin ne olduğunu sorabilirsiniz. Bu bunu yapmak için yolu var mı?

3 Cevap

Apaçık çözüm: gibi bir dizi, Dönüş ("success" => false, "explanation" => "saw a mouse and ran screaming like a little girl", "solution" => "call an exterminator").

Ben her zaman yöntemleri imzalar 'öngörülebilir, yani hep aynı tip dönmek tutmak öneririm (olması bir dizi, boolean, başka bir şey.)

I-the example of validating with Zend_Validate uses a sensible solution to your problem by differentiating the result from the eventual errors. düşünmek

İstisnalar nesne yok değil, ama size nesneye hiçbir başvuru var bir yerde bir istisna yakalamak eğer, o zaman nesne gevşek olabilir - bu çöp toplama kadar hala orada.

Eğer kendi özel durum sınıfı oluşturmak varsa bile istisna bir üyesi olarak, söz konusu nesneyi ekleyebilir, böylece durum idare nerede nesne mevcuttur.

Eğer bir nesne oluşturucu içinde bir istisna bu kurala istisna değildir. Daha sonra söz konusu nesnenin bir never created in the first place.

Diğer bir hata mekanizmalar vs İstisnalar kullanımı İstisnalar kadar eskidir. İstisnalar a hataların işlenmesine yönelik bir yöntem ve çok iyi çalışır ve bunları kullanarak değil zaman daha temiz kod neden birçok koşul vardır.

Onlar belirli bir soruna iyi bir çözüm olsun kısmen deneyim meselesi olduğunu, böylece onları kullanmayı öğrenmek için onları denemek zorunda kalacak.