WordPress eklentileri için nesne yönelimli koda giriş
Nesne odaklı programlamayı anlamak zor olabilir, ancak eklentilerin geliştirilmesinde becerilerinizi geliştirmek isteyip istemediğinizi öğrenmek ve anlamak önemlidir. Geçen yıl, eklentide belirli örnekler aracılığıyla nesne yönelimli programlama (OOP) kullanımı hakkında yazdım. Makale birçok gelişmiş kod içerdiğinden, yeni başlayanlar için OOP hakkında yazmanın daha iyi olacağını düşünüyorum. Bu makalede, eklenti odaklı nesnelerinizi yapmak için kullanabileceğiniz bazı pratik hileler göstereceğim, bu da kod çatışması olasılığını azaltacak ve daha iyi ve daha modüler bir kod yazma yolunda başlayacak.
Not: Bu makale nesne yönelimli programlama, gelişmiş kodlama kuvveti ile ilgilidir ve bazı bilgiler yeni başlayanlara uyacak şekilde eksik veya kasıtlı olarak basitleştirilmiştir. Amaç, bir gecede uzman olmanıza yardımcı olmamakla, OOP Core konseptini anlamanızı kolaylaştırmaktır. Deneyler ve mümkün olduğunca çok şey öğrenin ve kısa sürede OOP’de yetkin olacaksınız! Nesne yönelimli programlama nedir? Çok temel bir seviyede, OOP başka bir soyutlama katmanıdır. Daha önce WordPress için PHP yazdıysanız, soyutlama sürecini gördünüz. OOP, kod satırlarını tek tek yazmak yerine, inşaatı bir işlev gibi kullanır. İşlev kodu alabilir ve daha modüler hale getirebilir. İşte kısa bir örnek:
Çekirdek 9c3b6a2656d15c2832bf34358a2ae27 içerir
İçerikten manuel olarak bir teklif yapıyorum. Büyük bir sorun değil, ancak her gönderi görüntülediğinizde bunu yaptığınızı hayal edin. Sadece başım dönüyor değil, aynı zamanda teklifin uzunluğunu değiştirmek istiyorsanız? Şu anda sert kodlanmış 250 karakter, ancak her alıntıyı elle okumalısınız. Bu yüzden işlev çok kullanışlıdır – WordPress bu sorunun üstesinden gelir.
OOP, başlangıç işlevine çok benzeyen yeni bir soyutlama katmanıdır. Bu öğreticide, işlevler için bir kap gibi bir sınıf oluşturacağız.
Sıkışalım. Birinci sınıfınızı yazın, “Post” adlı bir sınıf oluşturalım. Bu sınıfın amacı, aşağıdakiler gibi blog yayınlarını manipüle etmektir:
Çekirdek 9c3b6a2656d15c2832bf34358a2ae27 içerir
Sınıf şu anda üç basit işlev içerir: bir teklif almak için bir işlev, ikinci işlev bir teklif görüntüler ve üçüncü işlev sadece başlığı yansıtmaktadır. Şu anda, sınıf sadece vaat edildiği gibi bir fonksiyon koleksiyonudur. Ancak, gerçekten hiçbir şey yapmadı. Sınıf gücü göstermek için, $ this adlı özel bir değişken olan __Construct () adlı özel bir işleve ve sınıfta tanımlanan değişkenlere bakmamız gerekir.
Bir ders yaptığınızda, amaç genellikle, ancak her zaman değil, onunla birçok nesne yapmaktır. Örneğin, yayın sınıfı ile bazı yayınlar yapabilirsiniz. Nasıl yapılacağını görelim:
Çekirdek 9c3b6a2656d15c2832bf34358a2ae27 içerir
Burada görülebilecek birçok kişi var, bu yüzden bir an için sabırlı olun! Sınıfı kullanarak bir nesne yaptığınızda (yukarıdaki kodda $ Post = Yeni Post (PostData $) bölümü olduğunda, yapıcı işlevi otomatik olarak gerçekleştirilir. Yeni sınıflara iletilen argümanlar yapıcıda mevcut olacaktır. Sınıfta tanımlanan iki değişkenin değerini doldurmak için $ PostData dizisinden alınan verileri kullanırsınız. $ Bu, sınıfın kendisini ifade eden özel bir değişkendir. Sınıfta her kod yazdığınızda, belirtilen değişkene veya $ this-> function () ‘i sınıfta tanımlanan işlevi ifade etmek için $ this-> özelliğini kullanabilirsiniz. Not: Sınıftaki işlevi “yöntem” olarak adlandırılır ve sınıfta tanımlanan değişkenlere “mülk” denir. Bundan sonra doğru terimi kullanacağım. Bir sınıf örneği oluşturduktan ve yöntemi çağırdıktan sonra sınıfın nasıl çalıştığını anlamanın en iyi yolunun kodu takip etmek olduğunu buldum. Bir yazı yaptığınızda, yapıcı çalıştırılır. Bunun iki özelliğimizi nasıl doldurduğunu gördünüz.
Ardından, $ post-> the_excerpt () diyoruz. Şimdi sınıfın dışına kod yazdığımızda bunu değil, nesne değişkenini kullanıyoruz. Bu işlev yalnızca diğer işlevlerin dönüş değerini yansıtır: $ this-> get_excerpt (). Çünkü bu işlevi $ anahtar kelimesini kullanarak diyoruz, bunu sınıfta aramamız gerektiğini biliyoruz.
Get_excerpt () işlevinin, içeriği belirlenen $ içerik değişkeninden aldığı için herhangi bir içeriğe devam etmesi gerekmez. Ardından küçük teklifimizi çalıştırın ve bir dize döndürün. Sınıf Özeti Eklentilerde sınıfları nasıl kullanacağımızı görmeden önce, hadi hızlı özetleyelim. Şimdilik sınıf, işlev için bir ambalaj. Sınıfı ve ardından sınıf isimlerini yazarak tanımlıyoruz. Kurawal braketlerinde işlevleri (adlandırılmış yöntemler) ve değişkenleri (özellik adlandırılmış özellik) yazıyoruz. Sınıfta kod yazarsak, sınıfta tanımlanan özelliklere ve yöntemlere $ anahtar kelimesi ile başvurabiliriz. Nesneleri $ Object = new Class ($ params) kullanarak nesneler yapabiliriz. Bu noktada, yapıcı işlevi, gerekirse mülkü doldurmak için kullanabileceğimiz sınıfta gerçekleştirilir. Nesne değişkenlerini kullanarak sınıfımızda bulunan nesnelerimizde işlevler gerçekleştirmek istiyorsak.
Nesneler hakkında biraz daha fazla bilgi istiyorsanız, bkz. Tutsplus.com veya diğer birçok PHP OOP öğreticisi. Sınıflar açıkladığı için eklentideki nesneleri kullanmak kodlarını önlemek için kodları iyidir. WordPress’in aynı adlı kendi işlevi olmasına rağmen, WordPress eklentisinde sınıfımda get_excerpt () işlevini de alabilirim. OOP iyidir, çünkü bir kod üreticisi olarak size daha iyi bir uygulamayı zorlarsanız. Kodunuzun okunması daha kolay ve sonuç olarak daha düzenli olacaktır. OOP, çocuk sınıfı ve diğer mekanizmalarla kolayca genişletilmesi amaçlandığından, çalışmanız daha modüler olma potansiyeline sahiptir.
İyi yazıldığında, OOP neredeyse her zaman daha iyi bir çözümdür. Avantajları elde etmek için genellikle birkaç satırdan daha büyük bir kod tabanına ihtiyacınız vardır, ancak basit WordPress eklentileri mükemmel bir uygulamadır. Başlarken, nesneleri basit bir kapsülleme mekanizması olarak kullanmanızı öneririm. İşte her gönderiden sonra “olağanüstü biri tarafından yazılan” yazan bir eklentinin kısa bir örneği: Çekirdek 9C3B6A2656D15C2832BF344358A2AE27
Kodu nesneye nasıl yerleştireceğimi seviyorum, kanca çağrınızı otomatik olarak daha düzenli hale getirir. Desen, filtrenin tüm eylemlerini ve kancalarını yapıcı işlevine koymanız ve ardından aşağıdaki işlevi yazmanız gerektiğidir.
Bu deseni izlerseniz, diziyi add_filter () ve add_action () işlevinin ikinci parametresi olarak kullanmayı unutmayın. İlk özellik $ olmalı ve ikincisi bir işlev adı olmalıdır. Bu teknikle rahat hissettikten sonra, nesnelerle biraz oynamaya başlayabilirsiniz. Arka uç değişiklikleri için bir eklentinin ön uç çıkışını ve başka bir sınıfı işlemek için bir sınıf yapabilirsiniz. Yorum sayısına göre sıralanan tüm yayınları görüntülemek için WordPress sitesini değiştiren bu eklentiye bakın:
Çekirdek 9c3b6a2656d15c2832bf34358a2ae27 içerir
Bu örnek biraz fazla karmaşık görünebilir (çünkü öyle), ancak iletmeye çalıştığım nokta, kodunuzu iyi tanımlanmış bir alana ayırmak için makul. Bu, işinizi genişletmesini ve değiştirmesini sağlar. Tam bir örnek daha karmaşık bir örnekle ilgileniyorsanız, WordPress eklentisi Bolarplate projesine bakın. Bu, eklentiyi doğru koda yerleştirme girişimidir. Birkaç projede kullandım ve özellikle daha yüksek bir karmaşıklık gerektiren eklentiler için gerçekten tavsiye edebilirim. SONUÇ WordPress, daha iyi bir kod içeren bir eklenti gerektirir ve bir çözüm nesne yönelimli kodu kullanmaktır. Kodunuzu okumayı kolaylaştırır, daha organize ve genel olarak daha yüksek kalite. Çalışmanızın kolayca genişletilebileceğini ve deneyimli bir OOP kodu üreticisi iseniz, iş pratik olarak kendini belgeleyecektir. Hiç bir eklentide OOP kullandınız mı? Bu öğretici başlamanız için size ilham veriyor mu? Bize aşağıdaki yorumlarda anlatın. Etiket: Kod