WordPress geliştirme için nesne arayüzünü kullanmalı mısınız?

Son zamanlarda, sınıf miras ve görünürlüğünden nesne odaklı PHP hakkında desenlere ve büyülü yöntemlere kadar çok şey yazdım. Tüm bu tartışmalarda, nesnenin arayüzünü dikkate almadan sınıf hakkında konuştum. Genellikle bir sözleşme veya anlaşma olarak adlandırılan arayüz, arayüzü uygulayan sınıfın özel kurallara uyması gereken sınıflar için kuralları düzenler. Arayüz, sınıfınızda kodunuzu artıran sınırlar verir. Bu makalede, arayüzün ne olduğunu ve neler yapılabileceğini ve yapılamayacağını tartışacağım. Sonunda, kodunuzu artırmak için arayüzü kullanmanız gerekip gerekmediğini görebileceksiniz.
Tam olarak ne arayüz? Arayüz, bunları uygulayan belirli sınıfların sahip olduğu yöntemleri veya yöntemleri açıklar. Bu, yöntemin ne yapacağını açıklamaz, çünkü arayüzde tanımlanan tüm yöntemler herkese açık olmalıdır. Bir arayüzle çalışmaya başladığımda, sık sık üzülüyorum çünkü yöntemi arayüzde korunan veya kişisel olarak beyan edemiyorum. Bu, arayüzün çekirdeğini kaybettiğimin bir işareti. Arayüzü uygulayan bir sınıf nesnesi olarak hareket etmek için bir sınıf yazarsam, genel yöntem ve imzayı tanımlayabilirim.
Aşağıda, ödeme işlemcimiz tarafından uygulanması gereken bir arayüz olan Caldera formlarının hızlı bir örneğidir. arayüz caldera_forms_processor_interface_payment {
/**
* Bir ödeme yapmak
*
* @sejak 1.3.5.3
*
* @Param Array $ Config İşlemci Yapılandırması
* @Param Array $ Form Yapılandırma Formu
* @param String $ ProccesId Kimliği Bu işlemci örneği için benzersiz
* @param caldera_forms_prosessor_get_data $ data_object işlemci verileri*
* @return caldera_forms_prosessor_get_data
*/
public işlevi do_payment (Array $ config, dizi $ form, $ proccesId, caldera_forms_presor_get_data $ data_object);
} Bu arayüzü şerit, PayPal veya diğer ödeme işlemcileri için uygulayabilirim ve ödemeleri tetiklemek için bu yöntemin kullanılacağını biliyorum. Ödemeler farklı şekilde işlenecek olsa da, gerçekten iyidir, çünkü arayüz bir yöntemin nasıl çalıştığını açıklamıyor, bu, hangi yöntemin ne yaptığını açıklar.
Bağımsız değişkenler ve iade türleri Arayüzde yöntemler oluştururken, işleve içerik eklemezsiniz. Bunun yerine, adı ve argümanı tanımlarsınız. Bu arayüzü uygulayan sınıflar, arayüz tarafından belirlenen varsayılan da dahil olmak üzere aynı argümanı kullanmalıdır. Arayüzdeki yöntem tür talimatlarını kullanabilir. Evet ise, uygulayan sınıf aynı tür talimatları kullanmalıdır. Örneğin, form işlemcisi tarafından uygulanacak Caldera formlarında bir arayüzümüz var. Bu arayüzdeki ilk yönteme bakın: public işlevi Pre_Processor (Array $ config, Dray $ form, $ proccessid); Bu arayüzü uygulayan sınıflar, ilk iki argümana devam eden dizilerle çalışmalıdır. Bir sınıf böyle yazılamazsa, bu arayüzü kullanmamalıdır.
Arayüz kaynağını görürseniz, alan adı verilen bir yöntem görürsünüz. Bu, diziyi döndürür, ancak PHP5’in iade türünün bir beyanı olmadığı için, bir kural değil, bir kuraldır. Arayüzü yalnızca PHP7’de kullanılacağını bilerek yazarsam, bunun gibi bir tür dönüş ekleyeceğim: public function (): dizi; Sınıf gibi arayüz arayüzlerini birleştirmek diğer arayüzlerle birleştirilebilir ve yöntemi devralabilir. Bu iyidir, çünkü basit bir arayüz oluşturmanıza ve daha büyük bir proje için birleştirmenize izin verir. Form işlemcileri için Caldera formlarında bir arayüz göstermeden önce. Özellikle bültenlere müşteri ekleyen işlemciler için başka bir arayüzümüz var. Bu arayüz ana işlemci arayüzünü devralır, ancak ek bir yöntem ekler. Bülten işlemcileri temel işlemci yöntemleri ve abonelik yöntemleri gerektirir. Dahili miras, kodu çoğaltmadan birkaç arayüzün birleştirilmesini sağlar. Bazı durumlarda. Bir sınıfın birkaç arayüz uygulaması için PHP 5.3.9 veya daha yeni bir zamanda mümkündür. Sözdizimi, arayüz adları arasında bir virgül kullanır. Aşağıda, son zamanlarda kullandığım Symfony Router ile kullanım için Kontrol Sınıfı Bildirgesi’nin bir örneği:
Kullanıcı sınıfı ServiceProviderInterface, BootableProviderface {Class kullanıcıları bu iki arabirimin kurallarına uymalıdır. Her ikisinin de parçalanması ve somut faydalar sağlaması için genişleyen bir arayüz yapmak için, bu yüzden sadece iki arayüzü uygulamak için bir virgül sözdizimi kullanıyorum. Şimdiye kadar arayüz sabiti sadece bir arayüzdeki yöntemi tartışıyoruz. Arayüz ayrıca sınıf sabitlerini de tanımlayabilir. Arayüzü uygularken veya devralırken sabit değerin değiştirilemeyeceğini unutmayın. Arayüz sabiti sık sık gördüğüm bir özellik değildir. Arayüz sabitlerinin kullanımlarından biri, slug eklentilerini tanımlamaktır. Kendim de dahil olmak üzere WordPress geliştiricileri, Slug Eklenti özelliğini bir kez tanımlamak ve JavaScript veya CSS Kavrama ve Slug menü sayfası olarak kullanır. Tekrarlayan kodu azaltmak ve değişikliklerin iyi olması gereken bir yere sahiptir. Ancak, tek başına, bu temel sınıfları genişletmek için iyi bir neden değildir. Bir arayüz, aslında gerekli olmayan sınıf miras hiyerarşisini takip etme ihtiyacı yaratmadan aynı sorunu çözebilir. Örneğin: Yönetici Arayüzü {

const slug = ‘eklentim’
} Nesne arayüzünü kullanmalı mısınız? Arayüzün ana avantajlarından biri, programınıza sözleşmenin destekleyebileceği kurallar eklemeleridir. Aklımda, veritabanı soyutlama gibi arayüzler. Her ikisine de ihtiyaç duyulmaz, ancak ne kadar hızlı eklerseniz, projeniz tarafından o kadar kolay yönetilir ve çalışma şeklini değiştirmek o kadar kolay olur.
WordPress eklentileri genellikle ek eklentilere ihtiyaç duyulacağı fikriyle yazılır. Çoğu zaman eklentinin ne yapması gerektiğine ve ne kullanmak için gerektiğine dair bir kongremiz var, ancak bu sadece bir kongre. Çekirdek eklenti, eklentinin nasıl çalıştığını gerçekten bilmiyor. Belirli bir arabirim kullanımı kullanmak için bir eklentiye ihtiyacımız varsa, class_implimat () kullanarak -Then çekirdek eklentisi eklentinin nasıl çalıştığını öğrenecektir. Bazı eklenti türleri için, kancaları kullanmak yerine eklenti sınıfını çağırmak daha iyi bir çözüm olabilir, ancak nasıl çalıştığını bilmeden imkansızdır. Arayüz buna izin verir. Arayüzü kullanmanın bir başka nedeni, projenizdeki herkes tarafından takip edilmesi gereken iş akışını tanımlamaktır. Dikkatli bir kod incelemesi yoluyla desteklenmesi gereken sözleşmelerin yazılmasının aksine, arayüzde belirtilen bir dizi kuralın izlenmesi veya ölümcül hatalar gerçekleşmelidir. Peki, bir nesne arayüzü kullanmalı mısınız? Cevap evet, ancak, sadece “daha iyi OOP” ya da sizi daha sofistike hissettirmek için kullanmayın. Tersine, kodunuzu daha kolay yönetilen, okunması daha kolay hale getirdiği ve gerçek sorunları çözdüğü için arayüzü kullanmalısınız.

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir