PHP gibi bir zayıf-yazdığınız dilde arayüz noktası nedir?

8 Cevap php

Ben bu anlamaya mümkün olmamıştım. Dil-çek tipi değilse, arayüzler size ne fayda sağlar?

8 Cevap

Arayüzleri program bir alt sınıf "unutuyor" üst sınıftaki bazı soyut yöntemi uygulamak için ne zaman daha tahmin edilebilir erken ve başarısız olmasına neden.

PHP'nin geleneksel OOP'deki, bir çalışma zamanı hatası sorunu aşağıdaki gibi bir şey güvenmek zorunda:

class Base_interface {
    function implement_me() { assert(false); }
}

class Child extends Base_interface {
}

Lütfen arabirimin alt sınıflarından birinin alt sınıfı kullanımı sırasında yerine daha sonra ilan edilir zamanda, böyle bir yöntem uygulamak değil zaman bir arayüz ile, anında geri bildirim almak.

this link (güzel özetliyor) Alındığı:

  • Interfaces allow you to define/create a common structure for your classes – to set a standard for objects.
  • Interfaces solves the problem of single inheritance – they allow you to inject ‘qualities’ from multiple sources.
  • Interfaces provide a flexible base/root structure that you don’t get with classes.
  • Interfaces are great when you have multiple coders working on a project ; you can set up a loose structure for programmers to follow and let them worry about the details.

Ben şahsen birden çok DBMS destek vardır bir DataAccess tabaka oluştururken düzgün bir çözüm arayüz bulabilirsiniz. Her DBMS uygulama sizin veri-access posibilities genişleyen yaparken Yani genel tanımlı functionschema kullanmak zorunda TransactionRollback Sorgu, FetchAssoc, FetchRow, numRows, TransactionStart, TransactionCommit, vb gibi fonksiyonları ile küresel DataAccess-arabirimini uygulamalıdır bunu Eğer işlev Sorgu şimdi ExecQuery adlı olmalıdır düşündüm çünkü 'yeniden başvuru noktada kırmak olmaz.

Arayüz Eğer büyük resimde geliştirmeye yardımcı olur :)

Türleri üç ayrı işleve hizmet eder:

  • dizayn
  • belgeleme
  • gerçek tip kontrolü

İlk iki tür denetlemesini hiçbir şekilde gerekmez at all. PHP arayüzleri no arastïrdïm bile Yani, onlar still sadece bu iki nedenden dolayı yararlı olacaktır.

Ben Ruby yapıyorum zaman, örneğin, her zaman Ruby arayüzlere sahip olmadığı gerçeğine rağmen, benim arayüzleri düşünüyorum. Ve ben genellikle kaynak kodunda recording bu tasarım kararlarının bir yol var isterdim.

Öte yandan, ben arabirimleri kullanılan Java kod bol gördük, ama açıkça yazar onlar hakkında hiç düşünmemiştim. Aslında, bir durumda, bir girinti, boşluklarla ve yazar aslında sadece kopyalanan ve sınıf tanımını kopyaladım ve tüm yöntem gövdeleri silmiştiniz arayüzünde bazı artık yorumlardan görebiliyordu.

Şimdi üçüncü noktaya: PHP aslında does kontrol arayüzleri yazın. Zamanında denetler yazdıkça sırf onları kontrol yazamaz anlamına gelmez at all.

Ve, aslında, hatta zamanında onları kontrol etmez, bu before zamanını olur ki, load time onları denetler. Ve statik tür denetlemesini hemen hemen çok tanımı "tür denetleme zamanında ama ondan önce olmaz" değil mi?

Eğer aynı imza ile gerekli yöntemleri ekledi değil varsa hataları olsun.

Arayüzler genellikle birim-test (test güdümlü tasarım) ile birlikte kullanılır.

it also offers you more stable code. the interfaces are also used to support iterators (eg. support for foreach on objects) and comparators.

Tip fonksiyon / metod imzaları ipucunu onunla bir sınıf arayüzleri ortamdır yolu hakkında çok daha fazla kontrole sahip olmanızı sağlar.

Eğer sadece sınıfın bir kullanıcı sadece yöntem parametreleri olarak doğru nesneleri kullanmak umuyoruz isterseniz, muhtemelen sorun içine edeceğiz. Bunu önlemek için, sadece kodları performansını düşürecektir kodunuzu kabartmak ve kesinlikle olurdu karmaşık kontrolleri ve filtreler uygulamak gerekiyor.

Tür Dayatma herhangi şişirilmiş, elle yazılmış çekler olmadan uyumluluk sağlamak için bir araç sağlar. Ayrıca sınıfları içeri uygun olacak nerede ne yapabiliriz ve dünyaya anlatmak için izin verir

Eğer yöntemleri şey uyumlu olması için uygulamak için ne biliyorum çünkü Özellikle Zend Framework gibi karmaşık çerçeveler, arabirimleri onlar size bir sınıftan beklemek ne söylemek çünkü canlı çok daha kolay ve.

Benim düşünceme göre, hiçbir nokta, gerek ve anlamı yok. Arayüzleri, görünürlük değiştiricileri veya tip ipuçları gibi şeyler aslında çalıştırmadan (bir anlamda) programı "doğruluğunu" uygulamak için tasarlanmıştır. Bu php gibi dinamik bir dilde mümkün olmadığından, bu yapıları esasen faydasız vardır. Onlar php ilave edildi neden tek nedeni böylece "kurumsal" pazar için dil daha cazip hale, daha java gibi görünmesi olduğunu.

Uncommented downvoting berbat: eklemek unuttum. ;/ /