İki veya daha fazla sınıf isimleri ile yöntem parametre türünü kısıtlamak?

3 Cevap

Biz yöntem parametreleri türü kısıtlayabilir; Örneğin, biz bu işlev parametre adı "Bazı Sınıf" ile Sınıfta anlatılan nesnesinin bir örneği olmalıdır diyebilirim.

function some_function(Some_Class $object) {
}

İki veya daha fazla sınıflar ile yöntem parametre kısıtlamak için herhangi bir php yerli posibilities var mı? Examle için, "Bazı Sınıf" veya "Bazı Sınıf 2" ya da "Bazı Class3".

Ya da belki adı "Some_Interface" ile arabirimini uygulayan sınıflar ile yöntem parametre sınırlamak için herhangi bir yolu var mı?

Teşekkür ederim.

3 Cevap

Bunu yapmak için sınıf devralma veya arabirimleri kullanmalısınız.

Prensip olarak değil, ama olabilir uydurmayın: PHP dinamik bir dil olduğu için, tip hatalar zamanında gerçekleşmesi; ve elle fonksiyonunun başında böyle bir şey ekleyerek bir hata tetikleyebilir:

if(check_any_type_constraints_here)
     trigger_error("Argument is not valid!", E_USER_ERROR);

Senaryoyu çökmesine amacıyla, PHP'nin yerleşik parametre türü denetimi ;) kadar güvenilir çalışacaktır.

Sadece (tüm geçersiz değerler onay başarısız olacak sağlamak gerekmez Eğer yöntem parametre listesinde gerçek bir kısıtlama eklerseniz, tüm geçerli değerler onu geçmesi mümkün olacak, emin olmanız gerekir, bu ne manuel çeki ) içindir. Türlerini OR'ing için, bunu başarmak için en güvenli yolu başlığındaki türü bildirmek, ve tam manuel kontrol dayanmaz etmektir. (Eğer iki veya daha fazla özel arabirimleri uygulayan bir değer istiyorsanız gibi) şimdiye kadar VE türleri istiyorsanız, o zaman (başarısız tercihen bir olasılıkla) başlığına ya koymak ve üzerine (ler) diğer kontrol edebilirsiniz vücut.

Umarım bu yardımcı olur.