PHP, hepimizin bildiği gibi çok gevşek yazdınız. Dil fonksiyon parametreleri ya da sınıf değişkenleri için türü her türlü belirtmenizi gerektirmez. Bu güçlü bir özellik olabilir.
Bazen de, bu sizin komut acı bir deneyim hata ayıklama yapabilirsiniz. Örneğin, nesnenin farklı bir tür beklediği bir yönteme nesnenin bir tür geçirerek belirli bir değişken / metod geçti nesne yok şikayet hata mesajları üretebilir. Bu durumlar çoğunlukla can sıkma vardır. Eğer "yanlış nesne", daha sonra komut dosyasının yürütülmesine kadar kullanılmayacaktır yanlış sınıfın bir nesne ile bir nesneyi başlatmak ve o zaman daha zahmetli sorunlardır. Bu durumda size çok daha sonra orijinal argümanı geçtiğinde daha bir hata alıyorum sonunda.
Bunun yerine ne geçti, belirli bir yöntem veya değişken olmadığını şikayet, veya daha sonra komut dosyası yürütme benim kullanılacak nesne geçti, I would much rather have an error message, at exactly where I specify an object of the wrong type, complaining about the object's type being incorrect or incompatible. strong> kadar bekliyor
Nasıl kodunuzda bu durumlar ele? Nasıl uyumsuz türleri tespit ediyorsunuz? Nasıl bazı tip-kontrol alabilirim ki benim komut içine daha kolay anlaşılır hata mesajları tanıtabilirsiniz?
Ayrıca, tüm bu süre Php miras için muhasebe nasıl yapabilirim? Düşünün:
<?php
class InterfaceClass
{
#...
}
class UsesInterfaceClass
{
function SetObject(&$obj)
{
// What do I put here to make sure that $obj either
// is of type InterfaceObject or inherits from it
}
}
?>
Sonra bu kodu bir kullanıcının kendi beton sınıfı ile arabirimini uygular:
<?php
class ConcreteClass extends InterfaceClass
{
}
?>
Ben de SetObject için kabul edilebilir ConcreteClass örneklerini ve tüm gelecek, bilinmeyen kullanıcı-tanımlı nesneler istiyorum. Nasıl doğru türü için denetlenirken bu izin verilebilir yapmak istiyorsunuz?