Daha fazla WordPress’in geliştirilmesi: Nesne Odaklı Programlamaya Giriş

WordPress oyununuzu tamamen yeni bir kodlama ustalığına getirmek ister misiniz? PHP becerilerinizi gerçekten teşvik etmeye ve eklentilerinize ve temalarınıza daha fazla karmaşıklık ve gelişmiş işlevsellik eklemeye hazır mısınız? En son dizimiz olan WordPress geliştirmeye hoş geldiniz. Bu seri, temanın ayrıntılı olarak geliştirilmesi, temaları hazır hale getirme, yapı eklentileri, türleri ve özel yayınların, sorguların ve döngülerin taksonomisi de dahil olmak üzere birkaç ilginç kodlama konusunu tanıtan orta kullanıcılar için popüler WordPress’imizin geliştirilmesinden geliyor. , özel alanlar ve meta veriler ve yerelleştirme.
Bu altı haftada, daha şiddetli bir meydan okuma ile karşılaşıyorsunuz – ancak bitirdikten sonra kendinize eksiksiz bir WordPress geliştiricisi deme hakkı verecek zorluk! Öğreneceksiniz:
PHP ile nesne yönelimli programlama tekniği,
Nesne yönelimli eklentiler nasıl yazılır,
Geçici ile çalış,
Gelişimsel iş akışınızı artırmak için komut satırını kullanın,
JavaScript ve Sass’ı derlemek için Gulp kullanın ve
WordPress’i WP-CHLI ile otomatikleştirme.
Not: PHP hakkında bilgi sahibi olmanız önemlidir, çünkü bu, geliştiricilere yönelik sürekli konuları içeren bu serinin WordPress’in temel dilidir. Bu dizi boyunca kod görüntülerine başvuracağım.
Bu kursa başlamadan önce, önceki WordPress için bir kod yaptığınızı ve temanın ve eklentinin nasıl çalıştığına dair temel bir anlayışa sahip olduğunuzu varsayar. Daha önce hiç WordPress geliştirmediyseniz veya yenilemek istiyorsanız, bu diziye başlamadan önce bilmeniz gereken her şeyi verecek olan orta kullanıcılar için WordPress’in gelişimini okumanızı şiddetle tavsiye ederim. Benimle birlikte çalışabilmeniz ve çalışabilmeniz için birkaç şeye erişmeniz gerekir. Bu: bir WordPress kurulum geliştirme. Yerel makineniz üzerinde çalışmanızı öneririm
Uzaktan çalışıyorsanız FTP Erişimli Kod Düzenleyicisi (ki bunu yapacaksınız)
Kod düzenleyicinizde FTP erişimi yoksa, FTP istemcisi
Tüm bunları bulmanıza yardımcı olacak bir bağlantı vermedim-böyle şeyler hakkında bildiğiniz ve kendiniz bulabileceğiniz bir seviyede olduğunuzu varsayıyorum.
Bu öğreticide tartışacağımız bu ilk öğreticide, hemen nesne yönelimli programlamaya ve bunun WordPress’in geliştirilmesine nasıl uygulandığına gideceğiz. Bu öğretici, orta kullanıcılarımız için WordPress geliştirme serisini tamamlarsanız öğrendiklerinizi oluşturacaktır. Nesne yönelimli programlama aslında bir WordPress geliştiricisi olarak bilmeniz gereken bir şey değildir, ancak OOP ile düşünmeye başladıktan sonra kodumun kalitesinin önemli ölçüde iyileştiğini buldum. Diğer dilleri daha kolay öğrenebilirim çünkü çoğu programlama dilinde yaygın olan nesneler ve sınıflar.
Öyleyse OOP’un temellerine bakalım, böylece daha karmaşık WordPress yapısı altında neler olduğunu anlayabilir ve daha iyi bir eklenti ve tema yazmaya başlayabilirsiniz. Nesne yönelimli programlama nedir? Nesne yönelimli programlama – veya OOP – bazı kodlama yöntemlerinden daha fazla zihniyettir. Aslında bu, nesneler, sınıflar, arayüzler vb. Gibi sofistike şeyler kullandığınız anlamına gelir. Aklımda, aynı zamanda daha yapılandırılmış bir şekilde düşünmek, kodunuzu daha sonra kullanmayı kolaylaştıracak şekilde özetlemek anlamına gelir. Yüzeyde nesne işlevle çok benzer. İşlevi ilk gördüğünüzde, işlevin yeniden kullanılabilecek işlevsellik oluşturmak için ilgili kodları gruplandırmanın bir yolu olduğunu biliyorsunuz. Neden bir işlevi çağırabildiğinizde gereken her seferinde bir teklif üreten bir kod yazıyor, değil mi? Sınıflar ve nesneler aynı zihniyeti takip eder. Bir gönderi görüntülemeniz gerektiğinde, teklif yapımcıları ve diğer bağlantı üreticileri gibi başlıklar, içerik ve kullanım işlevlerini görüntülemek isteyebilirsiniz. Blog girişleri gibi belirli öğelerle ilgili mantıksal yapılar yaparak sınıftaki ilgili işlevleri gruplandırabilirsiniz.
Tüm bunlar şimdilik net değilse endişelenmeyin. Bir şeyi yerine yerleştirmeye yardımcı olmak için bu eğitim boyunca birçok örnek göreceğiz. Neden OOP kullanıyorsunuz? Nesne yönelimli kod genellikle daha iyi bir koddur. Daha temiz ve okunması daha kolay kod tabanı sağlayan mantıksal kod grubunu özetler. Diğerlerinin yanı sıra, aşağıdaki avantajları sağlayın:
Kodu takip etmek daha kolay,
Kodu genişletmek çok daha kolay ve daha kolay,
İşlevin adının uzun olması gerekmez ve sınıftaki işlev, sınıf dışındaki işlevlerle çatışmaz,
Kendileri iyi yazılmış oop belgeleri ve
Daha yüksek yeniden kullanılabilirlik seviyesi elde edilebilir.
Bir örnekle öğrenmek, prosedürel kodlar olarak başlayan ve nesne yönelimli kodlara dönüşen örneklerle doğrudan başlamanın daha iyi olacağını düşünüyorum.
Diyelim ki karakter sayısını sınırlamamız ve belirli dizeleri bağlantılara dönüştürmemiz gereken Twitter (çok büyük ya da başka bir şey değil!) Gibi bir şey inşa ediyoruz. Aşağıdaki örnekte, küçük projelerimiz tarafından kullanılabilecek birkaç işlev yaptım:
Yükleme Çekirdeği 125EAC6213F3BB67EF9510FB8978F597
Get_chirp_text () işlevi metin olarak iletilir ve yalnızca 200 karakterden sonra kesilir. Get_hashtags () işlevi, karma işaretiyle başlayan tüm dizeleri almak için birkaç lüks regex kullanır. Create_chirp (), 200 karaktere kesilen ve hashtag’ler bağlantılara dönüştürülen “cıvıltı” kullanım ve yayınlama için önceki işlevi yerleştirir.
Cıvıl cıvıl metnimizin örnekleri.
Şimdiye kadar iyi. Ceza hizmetimiz aktif ve çalışıyor, ancak kodumuzla ilgili bazı potansiyel sorunlar var. Hizmetlerimizden para kazanmak için 300 veya 500 karakter kullanmanızı sağlayan bir paket sunarsak ne olur? Ya hashtagimizin URL’sini değiştirmek istiyorsak? Ya bir tweet’ten bir hashtag listesi yapmak istersek? Bu sorunun hiçbiri aşılamaz, ancak kod karmaşıklığına neden olmayacaktır, bu da kullanıcıları, görünümü, cıvıltı eylemlerini, akışları vb. Yönetmek için bir kodumuz varsa daha net olacaktır. . Tam bir kodla başlayacağım ve aşağıda açıklayacağım:

Yükleme Çekirdeği 125EAC6213F3BB67EF9510FB8978F597
Burada açıklanacak birçok şey, ama onu küçük parçalara ayıracağım ve bunun ne kadar harika olduğunu göreceksiniz! Örneği açıklayacağım ve bir sonraki bölümde bileşenlerin teknik tanımlarını göreceğiz. Hemen yukarıda “Chirping” adlı bir ders yaptığımı görüyorsunuz. Bir dizi değişken ve işlevi sarmıştır. Değişkenler, bu sınıfla yapılacak nesnenin birkaç önemli özellikini tanımlar.
$ Text, cıvıltıya dönüştürmek istediğimiz orijinal $ metnini tutar
$ uzunluk, izin verilen cıvıltıların uzunluğunu tutar
$ hashtag_base, hashtag bağlantısının temel URL’sini tutar
Hashtag haritası tutan $ hashtags
$ Chirp, cıvıltı için son HTML’yi tutar
Şimdilik __Construct () işlevini geçelim ve set_length () ‘e odaklanalım. Bu işlevin gerçekleştirilmesi, yalnızca 200 $ ‘a ayarlamaktır. $ Sorduğunu duydum mu? Bu, sınıftaki değişkenleri veya işlevleri ifade eden özel bir anahtar kelimedir. Mülkümüzün değerini belirlediğimizde, mülkümüz $ this-> uzunluk ile bir sonraki sınıftaki herhangi bir işlevin değerini hatırlayabileceğiz. Sonuç: Her şeyi parametreyle yaymamız gerekmiyor. Sırada set_hashtags (). İşlev benzerdir, ancak yapıcı işlevinde düzenlenecek olan $ this-> metinten daha sonra daha sonra metin alır. Hash’i bir anahtar ve tam bağlantı olarak yüklemek için biraz ürettiği diziyi bir değer olarak değiştirdim – bu metin değiştirmeyi kolaylaştıracaktır. Hashtag, işlevin sonundaki uzunluğa benzer şekilde düzenlenmiştir. Son olarak set_chirp () işlevi, metni kesmek için $ this-> metin ve $ this-> uzunluk ve dize bir bağlantı ile değiştirmek için $ this-> hashtag’leri kullanır. Sonunda, HTML’yi $ this-> cıvıltı olarak belirledi. En altta, $ CHIRP değişkeninde depolanan nesneleri oluşturmak için sınıf kullanıyorum. Sınıfa bir parametre verdim. Bir nesne sınıftan bir nesne yapıldığında (veya başka bir deyişle kullanıldığında), önce sınıftaki yapıcı işlevi (__Construct ()) çalıştırılır. Bkz. __Construct () sınıf. Sonra birkaç şey yaptı:
Bu, doğrudan $ this-> hashtag_base değerini ayarlar.
Bu, $ this-> metnin değerini doğrudan ayarlar.
Uzunluğunu ayarlamak için Set_Length () adlı bir işlev kullanır. Bu işlev sınıfta olduğu için, SET_CHIRP () işlevini kullanarak son tweet html’yi yapan $ ile buna atıfta bulunduğumuzu unutmayın.

Yani, bir nesne yaptıktan hemen sonra, özelliği nesnenin içinden tekrarlayabiliriz. Son Tweet HTML’nin $ Chirp-> CHIRP kullanarak erişebileceğimiz $ Chirp özelliğinde saklandığını biliyoruz. Eğer bunların hepsini anlamıyorsanız endişelenmeyin! Aşağıda kullandığımız öğelerin teknik tanımlarını okumak ve sonra bu bölümü geri döndürmek ve tekrar okumak iyidir. Sınıf ve nesne öğeleri Bu bölümde, biraz geri döneceğiz, kurutucu yaklaşımını alacağız ve nesnelerin ve sınıfların bileşenlerini göreceğiz. Nesneler ve sınıflar arasındaki fark, sınıfın yapılan nesneye dayanan bir plan olmasıdır. Sınıf, sınıf anahtar kelimeleri ve ardından sınıf adımız ve sınıf kodları içeren kıvırcık parantez kullanılarak tanımlanır.
Yükleme Çekirdeği 125EAC6213F3BB67EF9510FB8978F597
Sınıflar iki şey, değişkenler ve işlevler içerebilir, ancak sınıfta buna mülk ve yöntemler diyoruz – GO Şekil! Temel olarak tüm sınıflar, bir mülk ve yöntem koleksiyonu. Sınıfta mülk ve yöntemleri kullanmak için, bu anahtar kelimeyi kullanarak ona başvurmalısınız, örneğin: $ this-> get_chirp (). Sınıf dışından yönteme veya özelliğe erişmek için, sınıf adlarını kullanarak buna başvurmalısınız: örneğin: $ object-> get_chirp (). Sınıflar bir dizi özel işlev içerebilir. Bu işlevlerden biri, nesne sınıftan yapıldıktan hemen sonra çalışan __Construct () ‘dir. Bir sınıftan bir dizi nesne yapılabilir.
Yükleme Çekirdeği 125EAC6213F3BB67EF9510FB8978F597
Tüm bu bilgileri hatırlayarak, yukarıdaki örneğe dönmenizi ve tekrar okumanızı öneririm, ardından aşağıdaki bölüme devam edin.Nesneyi doğru kullanarak “doğru” kelimesinin etrafına alıntılar vermeliyim çünkü nesneyi doğru kullanmanın tek bir yolu yok.Gerçekten ne yaptığınıza bağlı.Önceki örneğimizdeki bazı ilginç şeyleri tartışayım.Uzunluğun belirlenmesi Uzunluğu ayarlamak için ayrı bir yöntemimiz var, ancak yapılan her şey ne olursa olsun 200’e ayarlamaktır.Bu aşırı mı?Set_chirp () ‘deki substr () işlevine neden sabit kod 200’ü yapmıyorsunuz?
Bunun nedeni gelecekteki düşünce. Uzunluğu bulmak set_chirp () görevi olmamalıdır. 160’a düşürmeye, üyelik durumuna göre farklı bir süre vermeye veya ne kadar süre üye olduğunuza göre karar verebiliriz. Kodu uzunluğu ayrı bir yöntem olarak tanımlamak için ayırırsak, kodumuzun diğer bölümlerini etkilemeden uzun dahili mantığı değiştirebiliriz. Özellik değerlerini düzenleyen ayarlama yöntemine genellikle ayarlayıcı işlevleri denir. Doğrudan yapıcıda birkaç özellik ayarladığımı unutmayın, ancak bazıları için ayarlayıcı kullandığımı unutmayın. Buradaki mantığım, üzerinde bir işlem yapmak zorunda kalmadan bir şey ayarlayabilirsem, bunu sadece yapıcıda yapacağım. Hashtag gibi bazı hesaplamalar yapmam gerekirse ya da yakında orada mantık olacağımı biliyorum – uzunluk gibi – ayarlamayı kullanacağım. Bu sınıfta cıvıl cıvıl bir sorun elde etmek, bir tweet üretmemiz, $ Chirp özelliğine koymamız ve daha sonra özelliğe başvurmamızdır. Bu, cıvıltı yapıldıktan sonra sınıfı biraz işe yaramaz hale getirir. SET_CHIRP () ‘nin yapıcıdan kaldırılması, adını get_chirp () olarak değiştirerek ve bu işlevi tweet almak için kullanarak daha iyi bir çözüm mümkündür. Çekirdeğin temelini oluşturma
Bu, daha önce ve/veya yaptıktan sonra tweet üzerinde ameliyat yapmak istiyorsak yararlı olacaktır. Sınıftaki mülk ve yöntemlere atıfta bulunma yeteneği ile çalışmak bize sınıfla çalışmak için birçok strateji verir. Yapıcıların çoğunu ilk örneğimizden atarsak, gerekli işlemleri sınıf dışından yapabiliriz. Bkz. Çekirdeği Yükleme 125EAC6213F3BB67EF9510FB8978F597
Buradaki fark, yapıcının karma işlememesi, yani $ this-> hashtag’lerin her zaman mevcut olmayacağı anlamına gelir. Bunu get_chirp () işlevinde hesapladım. Sonuç olarak, iki şekilde tweet oluşturabiliriz:
Yükleme Çekirdeği 125EAC6213F3BB67EF9510FB8978F597
Bu şaşırtıcı çünkü daha fazla kontrole sahibiz, değil mi? Peki, bir tür. Bu doğru yolda ama bir tutarsızlık sorunu var. Get_chirp () dediğinizde ne olacağını asla onaylayamazsınız – bu mümkün olan veya bir hashtag bağlantısı olmayabilir. Bu, OOP (veya sadece sıradan PHP’nin) nasıl kullanılacağının bir örneğidir. Daha sonra sorunlara neden olabilir. Bunu yapmanın daha iyi yolu, biri her zaman bir bağlantı ile cıvıltıyı gösterecek iki işlev yapmaktır, diğeri her zaman bir bağlantı olmadan görüntülenir. WordPress örnekleri harika ve iyi belgelenmiş bir WordPress örneği wp_query. Daha önce OOP bilgisi olmadan kullandıysanız, umarım şimdi daha açıktır. WordPress ile en son sekiz yazınızı ve yaklaşan kitaplarınızın üç incelemesini içerecek özel bir sayfa oluşturduğunuzu varsayalım. WP_Query sınıfını kullanarak iki nesne şu şekilde yapabilirsiniz:
Yükleme Çekirdeği 125EAC6213F3BB67EF9510FB8978F597
Dokümantasyonları görmek, $ Found_Posts gibi bu sınıf tarafından sağlanan bir dizi mülk olduğunu görebiliriz. Şimdi bu mülke nasıl atıfta bulunacağımızı biliyoruz:
Yükleme Çekirdeği 125EAC6213F3BB67EF9510FB8978F597
Nesnenin ve sınıfın en zor kısımları hakkında not kullanmıyor, ancak düzgün kullanıyor. En kötüsü, prosedürel programlamadan daha fazla fayda sağlamayacaklar, en çok kodunuzun yapısını ve genişlemesini sağlayacaklar. Burada öğrendiğimizden daha fazla sınıf var, bu sadece OOP kullanan kodu okuyabilmeniz için gereken temel bilgiler. Sınıfı iyi kullanmanın sırrı, diğer kodlar gibi, çok fazla uygulamadır. Nesne yönelimli kod yazmaya başlamanızı öneririm. Tüm bunları öğrenmeye başladığımda, bu benim için çok işe yaramazdı; Bu net faydalar sağlamaz. Sebepler aşağıdaki gibidir: fayda sağlamamak. WordPress’ten birkaç sınıf, Laravel ve diğer projeler aracılığıyla birkaç OOP okumaya başladıktan sonra, gerçekten modüler bir kod yazma ve kendimi PHP’de tanımlama konusunda oldukça becerikli oldum. WordPress’in gelişiminde ustalaşarak, şimdilik neyin mümkün olduğu hakkında yüzeyi çizdik. Daha önce öğreticide bahsettiğim gibi, burada tartıştığımızdan daha fazla ders var ve daha fazla öğrenmenizi, pratik yapmanızı, hata yapmanızı ve asla pes etmemenizi öneririm! İşte bu serideki bir sonraki öğreticiye başlamadan önce denemek için bazı iyi kaynaklar:
Yeni başlayanlar için nesne yönelimli PHP – Keys+
Sihirli Yöntem – PHP
Yeni başlayanlar için oop-wpmu devwarisan-php5-tutorial.com
Bu serinin bir sonraki öğreticisinde, şimdiye kadar öğrendiklerinizi uygulayacağız ve nesne yönelimli eklentileri yazmaya başlayacağız.
Bu öğreticinin yararlı olduğunu düşünüyor musunuz?Neden WordPress gelişimini öğrenmek istiyorsunuz?Daha fazla bilmek istiyorsun?Bize aşağıdaki yorumlarda anlatın.
Etiket:
kodlamak
gelişim

admin

Bir Cevap Yazın

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