PHP Geliştiricileri için Dikkat Edilesiler

  • Basit string aramaları için regex (preg_match vb.) kullanmayın.
  • Yazılım geliştirme aşamasında error_reporting(E_ALL | E_STRICT) ile hata gösterimlerini açın. Production kısmında ise error_reporting(0) kullanın.
  • Sunum ve iş mantığı katmanlarını birbirinden ayırın. Örneğin bir template sistemi kullanabilirsiniz. (Kişisel tercihim: MVC)
  • Weak-typing (PHP gibi otomatik tür dönüşümü yapan dillerde giren ya da çıkan veri türünün önemsenmeden kullanımı) iki ucu boklu değnektir. Cömertçe sömürmekten kaçının.
  • Tüm kullanıcı girdilerini kontrol edip, temizleyin. Kullanıcıya hiçbir zaman güvenmeyin. Evet, hepsine 🙂
  • Kullanıcı girdilerini kontrol edin demiş miydim? Gerçekten çok önemli bir konu bu.
  • Benzer bir kütüphane yazarken parametre sırılamasına bağlı kalın. (Yazar burada strpos()’a gönderme yapmış)
  • define sizin dostunuzdur. Lütfen kodlarınızda saçma sabitler kullanmayınız.
  • register_shutdown_function() kullanmadığınız sürece, die()/exit() gibi fonksiyonları hata yakalamak için kullanmak kötü ve hantal bir yoldur, özellikle production’da.
  • Kodunuzu düzenli olarak biçimlendirin.
  • Şu şekilde bir kod yazmayın:
    if ( condition ) { 
    	return true; 
    } else { 
    	return false; 
    } 

    ya da

    $variable = condition ? true : false;
  • Opcode cache sistemi kullanın (Örnek: APC)
  • Gerektiğinde dağıtılabilir bir cache sistemi kullanın (Örnek: memcached)
  • Zorunlu tür dönüşü kullanımında dikkatli olun, sizi aldatabilir. Örneğin: “-” == (int)”-“ sonucu true‘dur.
  • POST gerektiğinde POST, GET gerektiğinde GET kullanın.
  • PDO kullanın. PDO, esnek prepared statement desteği olan, güvenilir ve okunabilir kod yazmanızı sağlayan modern bir veritabanı kullanım aracıdır.
  • Eğer sadece bir string çıktısı verecekseniz tek tırnak kullanın. Çünkü çift tırnak kullandığınızda derleyici öncelikle içinde değişken ya da özel karakter arayacaktır.
  • echo ile çıktı verirken birleştirme operatörü olarak nokta yerine virgül kullanın.
  • Dizilerde anahtar değer tanımlamarında tırnak işareti kullanın.Yanlış örnek:
    $dizi[anahtar]

    Doğru örnek:

    $dizi['anahtar']
  • Short open tag (yani < ? ) kullanmayın. Çünkü bu seçenek her sunucuda açık olmayabilir ve php.ini değişikliği yapmanız mümkün olmayabilir.
  • Döngü kontrolü içinde fonksiyon kullanmaktan kaçının. Çünkü döngü her bir iterasyonda o fonksiyonu çalıştırıp zaman kaybedecektir.Kötü örnek:
    for ($i = 0; $i &lt; count($array); $i++) {
    	//stuff
    }

    İyi örnek:

    $count = count($array);
    for($i = 0; $i &lt; $count; $i++) {
    	//stuff
    }
  • register_globals ya da magic quotes özelliklerine güvenmeyin. Bunlar eski PHP özellikleridir. Eski sürümlerde bunlar açık olarak gelir ve güvenlik zafiyetine neden olabilir. Kapatmayı unutmayın.
  • Değişkenlerinizi kullanmadan önce tanımlayın.Kötü örnek:
    $data['key'] = 'value';

    İyi örnek:

    $data = array();
    $data['key'] = 'value';
  • Kodunuz için döküman yazın.
  • Kod yazarken bir standarta bağlı kalın. Örnek Zend

Eklemeler

  • header(‘Location: ‘.$url); şeklinde bir yönlendirmeden sonra die() fonksiyonu kullanın ki yönlenmede çıkacak bir aksilikte kod çalışmaya devam etmesin.

Kaynaklar:
http://stackoverflow.com/questions/1186957/common-programming-mistakes-for-php-developers-to-avoid
http://www.phpvs.net/2008/06/04/ten-php-best-practices-tips-that-will-get-you-a-job/