- 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/