PHP Tür Dayatma kullanmalısınız (ne zaman?)

5 Cevap php

Ben tip katkısını eklemek PHP yazarların motivasyonu anlayamıyorum. Göründü önce ben mutlu yaşadılar. PHP 5'e eklenmiştir Sonra, ben her yerde türlerini belirterek başladı. Şimdi ben o kadar ördek yazarak sınıfları arasındaki minimal kaplin garanti gibi, kötü bir fikir, ve kod modülleştirme ve yeniden güçlendirir düşünüyorum.

Tip ipuçları 2 lehçeleri içine dilini bölmek gibi hissediyor: Bazı insanlar ipuçlarıyla, statik-dil stilinde kod yazmak, ve diğerleri eski güzel dinamik dil modeline sadık. Ya da "ya hep ya hiç" bir durum değil mi? Uygun zaman ben bir şekilde, bu iki stilleri karıştırmak gerekir?

5 Cevap

Bu dinamik yazarak vs hakkında statik değil, php hala dinamik. Bu arayüzler için sözleşmeler hakkında. Eğer bir işlevi parametrelerden biri olarak bir dizi gerektiriyorsa biliyorsanız, işlev tanımında orada zorlamayın. Ben doğrusu işlevi daha sonra aşağı erroring daha hızlı başarısız tercih.

(Ayrıca dinamik bir bağlamda mantıklı bool, int, string, float, için Tür Dayatma belirtmek olamaz unutmayın.)

Sizin işlevi kod kesinlikle geçirilen parametrenin türüne dayanır ne zaman Tür Dayatma kullanmalısınız. Kod yine de bir hata üretecek, ancak tür ipucu size daha iyi bir hata mesajı verecektir.

Tür Dayatma eklemek için PHP grubun motivasyonu platformu daha, tanıdık, rahat ve çekici kılacak bir başka özelliği ile Java tarzı OOP kullanılan insanları sağlamak oldu. Bu da, kendi çekirdek iş ile Zend yardımcı olacağını, PHP daha "kurumsal hazır" yapacak.

Kenara Pazarlama, kendi kullanımları var. Parametre başka bir şey olsaydı sen istenmeyen (genellikle sessiz) hatalarına neden olacak belirli bir şekilde bir parametre üzerinde çalışan bir yöntem yazıyorsanız, o zaman Tür Dayatma kullanarak kod geliştirme, üretimden ziyade kırılma sırasında kıracak sağlar.

Hiç türü katkısını yapıyor karar verirseniz, en azından bunun yerine somut veya soyut sınıfların arayüzlerini kullanarak yok. Nedeni basit, PHP birden çok devralma izin vermez ama çoklu arayüzleri uygulama izin vermez. Yani herkes kütüphane kullanmaya çalışırsa eğer o zaten çoktan başka uzandığı soyut / somut sınıf verilen genişletmek olurdu durumda karşı olarak arabirimini uygulayan zorluk olmayacaktır.

Tip IDE bir yöntem parametrenin türünü bilmek ve böylece uygun intellisense sağlamak için imkansız olacağını ima olmadan - editörün sağ, intellisense var mı? ;). Ben sadece bu PHP tip ipuçlarının duydum ilk olarak IDE, intellisense için (btw ipucu için teşekkürler) bu kullanmak farz olması gerektiğini söyledi.