
React Native makalemden sonra tekrar asıl uzmanlığım olan WordPress konusunda makale yazmak istiyorum. Düzensiz kodlamaları önlemek ve yazılan kodları daha da okunaklı hale getirmek için WordPress’in hazırladığı kodlama standartları var, bunları elimden geldiğince ayrıntılı bir şekilde anlatmaya çalışacağım.
Tırnak Kullanımı
Aslında pek önemsiz görünsede hem sizin işinizi kolaylaştırmak için hemde daha okunaklı olması için tırnakları düzgün bir şekilde kullanmak önemli.
Eğer statik bir metin oluşturuyorsanız tek tırnak, dinamik bir metin oluşturuyorsanız çift tırnak kullanmalısınız.
Hemen örnek verelim.
Edit: Bu makaleyi yazarken siteme syntax eklentisini kurmayı unutmuşum, hemen kurup geliyorum.
…
Kurdum, bakalım nasıl görünecek, neyse konumuza dönelim.
echo '<a href="/static/link" title="Yeah yeah!">Link name</a>'; echo "<a href='$link' title='$linktitle'>$linkname</a>";
Gördüğünüz gibi statik içeriklerde tek tırnak kullanırken dinamik içeriklerimizde çift tırnak kullanıyoruz. Bunun en önemli sebebi eğer dinamik içeriklere tek tırnak ile başlasaydık değişken kullanabilmek için tırnak içinde tırnak kullanmamız gerekecekti.
Sizinde bildiğiniz gibi PHP’de çift tırnak kullandığımız zaman değişkenleri ekrana bastırmak için ekstra bir şey yapmamıza gerek kalmıyor.
Girintiler
WordPress girinti yaparken boşluk yerine tab kullanmamızı istiyor.
İstisna: Eğer kod bloklarınız hizalanmış ve okunaklı ise daha da okunaklı yapmak için boşluk kullanabilirsiniz
[tab]$foo = 'somevalue'; [tab]$foo2 = 'somevalue2'; [tab]$foo34 = 'somevalue3'; [tab]$foo5 = 'somevalue4';
Dizilerde Girinti Kullanımı
Eğer dizileriniz birden fazla veri içeriyorsa her veri yeni satırda başlamalıdır.
<?php ## Tek veri var ise ## $query = new WP_Query( array( 'ID' => 123 ) ); ## Birden fazla veri var ise ## $query = new WP_Query( array( [tab]'post_type' => 'page', [tab]'post_author' => 123, [tab]'post_status' => 'publish', ) ); ?>
Not: Son satırda isteğe bağlı olarak ‘,’ bırakmanız daha iyi olacaktır, daha sonra veri eklediğinizde veya sıralamayı değiştirmek istediğinizde size kolaylık sağlayacaktır.
Switch Yapısında Girinti Kullanımı
Switch yapısında case için 1 tab, break yapısı içinse case içinde 1 tab kullanmanız yetecektir.
<?php switch ( $type ) { [tab]case 'foo': [tab][tab]some_function(); [tab][tab]break; [tab]case 'bar': [tab][tab]some_function(); [tab][tab]break; } ?>
elseif
Kullanın, else if
değil.
Aslında bu kullanımda tamamen opsiyonel, WordPress kodlarımıza göre hangisi uygunsa onu kullanacağımızı belirtiyor ama yine de elseif
kullanmamızı istiyor.
elseif
ile else if
arasında ne fark var?
Evet aklınızda beliren ilk sorunun cevabını hemen vereyim.
Aslında normal şartlarda iki kullanımda aynı sonucu döndürür, ancak eğer if kodlarını :
kullanarak yazdıysanız else if
maalesef hata verecektir o yüzden elseif
kullanmanız gerekecektir.
Hemen örnekleyelim.
<?php ## Hata Vermez - Çalışır ## if (birinci_kosul) { // ... }elseif (ikinci_kosul) { // ... } if (birinci_kosul): // ... elseif (ikinci_kosul): // ... endif; ## Hata Verir - Çalışmaz ## if (birinci_kosul): // ... else if (ikinci_kosul): // ... endif; ?>
PHP Etiketlerini Açma ve Kapatma
Eğer çok satırlı php kodlarınızı html içine yerleştireceksiniz <?php
ve ?>
etiketlerini tek başına bir satırda kullanın.
<?php ## Doğru ## function foo() { ?> <div> <?php echo bar( $baz, $bat ); ?> </div> <?php } ?> <input name="<?php echo esc_attr( $name ); ?>" /> <?php ## Yanlış ## if ( $a === $b ) { ?> <some html> <?php }
Umarım aradaki farkı anlatabilmişimdir 🙂
Not: PHP etiketlerinde sakın kısa kod kullanmayın, her zaman tam halini kullanın.
Gereksiz Boşlukları Kaldırın
PHP kapatma etiketinin sonundaki boşlukları kaldırmanız ve dosyaların sonuna kapatma etiketi koymamanız önemle rica olunur.
Boşluk Kullanımı
Virgülden sonra boşluk kullanabilirsiniz, mantıksal operatörlerin ve dizilerdeki verilerin başına ve sonunda boşluk kullanmalısınız.
x == 23 foo && bar ! foo array( 1, 2, 3 ) $baz . '-5' $term .= 'X'
if, elseif, for
ve switch
yapısında açma ve kapatma parantezlerinin yanında bir boşluk bırakmalısınız.
foreach ( $foo as $bar ) { ...
Fonksiyon tanımlarken:
function my_function( $param1 = 'foo', $param2 = 'bar' ) { ... function my_other_function() { ...
Bir fonksiyonu çağırırken:
my_function( $param1, func_param( $param2 ) ); my_other_function();
Mantıksal karşılaştırma yaparken:
if ( ! $foo ) { ...
Tür dönüşümü yaparken:
foreach ( (array) $foo as $bar ) { ... $foo = (boolean) $bar;
Dizilere atıfta bulunurken:
$x = $foo['bar']; // doğru $x = $foo[ 'bar' ]; // yanlış $x = $foo[0]; // doğru $x = $foo[ 0 ]; // yanlış $x = $foo[ $bar ]; // doğru $x = $foo[$bar]; // yanlış
Switch yapısında case yazarken ilgili koda boşluk koymamalısınız. Yani:
switch ( $foo ) { case 'bar': // correct case 'ba' : // incorrect }
Aynı şekilde dönüş türü bildirimlerinde boşluk olmamalıdır.
function sum( $a, $b ): float { return $a + $b; }
Özel bir durum olmadıkça parantez içinde boşluk kullanılmalıdır.
if ( $foo && ( $bar || $baz ) ) { ... my_function( ( $x - 1 ) * 5, $y );
SQL Biçimlendirme
SQL kodlarınızı birkaç satır halinde yazabilir eğer karmaşık duruyorsa girinti ekleyebilirsiniz. Ayrıca UPDATE
ve WHERE
gibi ifadeleri her zaman büyük harfle yazmanız önerilir.
Veritabanında güncelleme işlemi yaparken $wpdb->prepare()
kullanabilirsiniz.
$var = "dangerous'"; $id = some_foo_number(); $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id ) );
%s
string %d
tam sayılar için kullanılır.
Veritabanı Sorguları
Veritabanıyla doğrudan işlem yapmak yerine ihtiyacınız olan verileri alan veya işleyen bir fonksiyon var ise onu kullanabilirsiniz.
Eğer gerçekten işlem yapmanız gerekiyorsa WordPress geliştiricilerinin listesine ulaşarak ve onlara e-posta atarak bir sonraki sürümde eklemelerini isteyebilirsiniz. Eklemeleri tamamen kendi insiyatiflerindedir.
Not: Elbette kendiniz işlem yapıp düzenleme yapabilirsiniz ama güvenlik açısından bunu düşünebilirsiniz.
Adlandırma Kuralları
WordPress diyor ki: Değişken isimleri yazarken küçük harfler kullanabilirsiniz, fonksiyon veya action/filter yazarken asla camelCase şeklinde bir adlandırma yapmayın.
Bunun yerine alt tire kullanarak ayırın, değişken isimlerini gereksiz yere kısaltmayın, kodun anlaşılır olmasını sağlayın.
function some_name( $some_variable ) { [...] }
Sınıflarda ise tüm kelimelerin ilk harfi büyük olmalı ve eğer kısaltma kullanıyorsanız tüm harfler büyük olmalıdır.
class Walker_Category extends Walker { [...] } class WP_HTTP { [...] }
Eğer sabit yazıyorsanız tüm harfler büyük olmalı ve alt tire ile ayrılmalıdır.
define( 'DOING_AJAX', true );
Dosya isimleri ise tamamen küçük olmalı kelimeler tire “-” ile ayrılmalıdır.
my-plugin-name.php
camelCase Nedir Peki?
camelCase yazımından da anlayabileceğiniz ilk kelimenin küçük daha sonraki kelimelerin büyük harfle başlamasıdır.
Okunabilirlik mi? Kısa kod mu?
WordPress’in kendi sitesinde başlık “Zeki Kod” olarak geçse de biraz tuhaf geldiği için bu şekilde adlandırmak daha mantıklı geldi.
“Genelde okunabilirlik, zekilikten veya kısacılıktan daha önemlidir.” – WordPress
isset( $var ) || $var = some_function();
Yukarıdaki kodlar her ne kadar daha kısa ve akıllıca olsa da aşina olmayanlar için anlaşılması daha zor olacaktır. Aşağıdaki gibi yazmayı düşünebilirsiniz.
if ( ! isset( $var ) ) { $var = some_function(); }
Ayrıca evel()
fonksiyonu kesinlikle kullanılmamalıdır.
Evet arkadaşlar okuduğunuz gibi biraz uzun bir makale oldu, ama sizler için rehber niteliği taşıyacağınız düşünüyorum. Bazı yerleri üşendiğimden veya önemli görmediğimden atladım.
Not: Bu makale WordPress’in kendi rehberinin tamamen çevirisi değildir, daha iyi anlaşılması için kendi açıklamlarımı kullandığım yerler oldu.
Kaynak ve İleri Okuma: https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/
2 Yorum var
onur taşcı
güzel anlatım olmuş, bir de editör tavsiyesi alabilir miyim
mustafakucuk
Selam, tabi. Ben VSCode ve Atom kullanıyorum ama bu editörler sistemin donanımına göre performans gösteriyor, eğer çok hızlı işlem yapmak istiyorsam Sublime Text kullanıyorum.