Bilinmesi Gereken 7 PHP İpucu

Merhabalar,

Bu yazımda yabancı bir blogda okuduğum içeriği kendi tarzımda sizlere anlatacağım. Öncelikle bahsettiğim yazıyı aşağıdaki adresten okuyabilirsiniz:

http://www.codexworld.com/php-tips-tricks-hacks-every-programmer-should-know/

Şimdi devam edebiliriz. İlk ipucumuzla başlayalım.

1 – Üçlü Operatör (Kısa İf)

Aslında bu birçoğumuzun bildiği bir şey ama yazmakta fayda var. Kısa if şu şekilde kullanılıyor.

Koşul ? koşul doğruysa yapılacak işlemler : Koşul doğru değilse yapılacak işlemler;

Kullanımımız aynen bu şekilde. Şimdi bir örnek yapalım, mesela diyelim ki eğer GET metodu ile alınan bir isim değerimiz varsa bunu isim değişkenine atayalım. Eğer böyle bir metod yoksa bunun değerini İsimsiz yapalım. Aynen şu işlemi yapabiliriz.

$isim = isset($_GET['isim']) ? $_GET['isim'] : 'İsimsiz';

Bu kod parçamızı yazalım ve isterseniz bir de hemen alt satırına echo $isim; komutunu ekleyelim. Bunu çalıştırdığımızda ilk başta GET ile gelen bir isim değeri olmayacağı için ekrana ‘İsimsiz‘ yazdıracaktır. Eğer siz URL’inizin sonuna ?isim=Zahid yazarsanız ekrana ‘Zahid‘ yazdıracaktır. Kısa if kullanımımız bu şekilde. Eğer else kısmında, yani noktalı virgülden sonra bir şey yapılmamasını istiyorsanız bu durumda genelde buraya null yazmanız işinizi görecektir.

2 – PHP İstisna Yönetimi

Aslında bu konu her PHP’cinin değil her geliştiricinin bilmesi gereken bir konu ve oldukça önemli. İstisna yönetimi şu oluyor. Normalde programımızı hata olmayacak, tüm veriler düzgün çalışacak şekilde programlarız ama her zaman işler istendiği gibi yürümeyebilir. Bu durumlarda ortaya çıkabilecek istisnai durumlardan kurtulmamız bunları yönetmemiz gerekebilir. İşte bu durumlarda try-catch yapısını kullanıyoruz.

PHP Try Catch Caps

Her ne kadar konumuzla tam alakası olmasa da bu resmi de sizlerle paylaşmak istedim. Yazılarımda çok fazla resim kullanmadığımı farkettim, bu yazımda bari bir tane olsun.

Neyse devam edelim. Try-catch yapımızı şu şekilde kullanıyoruz.

try {
    // Hata çıkma ihtimali olan kod satırı
}catch(Exception $e) {
    // Hata çıkması durumunda yapılacak işlemler (Genelde hata mesajı ekrana yazdırılır)
    echo $e->getMessage();
}

Yalnız burda yanlış anlaşılmaması gereken bir nokta var. Herbir satır kodumuz hata çıkartabilir. Bu her satırı try catch yapısı içine almamız gerektiği anlamına gelmiyor. Örnek olarak bir veritabanı bağlantısı kurmaya çalıştığınızı düşünün. Normalde veritabanı bağlantısının kurulması gerekir ama kurulamaması gibi bir istisnai durum da vardır. İşte bu durumda bir kullanıcıya hata mesajı göstermek isteyebiliriz. Örnek olarak yaptığınız uygulama mutlaka veritabanıyla çalışmak zorundaysa veritabanına bağlanamama gibi bir durumda bütün scriptinizin çalışmayı durdurmasını isteyebilirsiniz. Örnek olarak PDO sınıfı ile veritabanına bağlantı sağlamaya çalışan ufak bir try-catch bloğu yazalım.

try {
    $dbHandler = new PDO('mysql:hostname=localhost;', 'root', 'password');
}catch(PDOException $e) {
    die($e->getMessage());
}

Buradaki ufak kod bloğumuz eğer veritabanı bağlantısı sağlanamazsa scriptin çalışmasını die komutu ile tamamen durduracak ve PDOException sınıfının bize vermiş olduğu hata mesajını döndürecek.

3 – array_key_exists() vs in_array()

Bu bilginin doğruluğunu teyit etmek için henüz bir çalışmada bulunmadım ama okuduğum kaynakta diyor ki: in_array kullanmak yerine array_key_exists kullanmak daha iyi bir seçim çünkü bu fonksiyon in_array fonksiyonundan daha hızlı.

Denemek lazım.

4 – list() Fonksiyonu

Belki de en çok kullanacağınız fonksiyonlardan biri. Dizideki elemanları değişkenlere atamanıza yarıyor. Örnek olarak:

$uye = ['Mustafa Zahid Efe', 'mustafa@zahidefe.net'];
list($isim, $email) = $uye;

Nur topu gibi iki değişkenimiz olmuş oldu, hayırlı olsun 🙂

5 – compact() Fonksiyonu

Bu fonksiyonu da list’in tam tersinin azcık değişiği gibi düşünebilirsiniz. Örnekle daha iyi anlayabilirsiniz.

$isim = 'Mustafa Zahid Efe';
$mail = 'mustafa@zahidefe.net';
$dizi = compact('isim', 'mail');

Diziyi print_r veya var_dump ile ekrana yazdırdığınız zaman size şu yapıda bir şey döndürecektir.

['isim' => $isim, 'mail' => $mail]

Compact fonksiyonunu bu örnekle anlamadıysanız kısaca anlatayım. Compact metodu içine girdiğimiz parametrelerle aynı isimdeki değişkenleri alıp bunları aynı isimdeki keylere sahip dizi elemanlarına atayarak size bir dizi döndürür.

Şimdi farkettim de açıklama daha karmaşık oldu, birkaç örnek yaparsanız iyi kavrarsınız sanırım.

6 – Varsayılan Değişken Değeri

Bazen değişkenlerinizin içinin boş olması yazılımınızın işlemesinde ciddi aksaklıklara yol açabilir. Bu yüzden değişkenlerinize bir varsayılan değer vermeniz çok önemlidir. Bu maddemizin bir örneği yok, sadece değişken oluştururken değersiz bırakmayın.

7 – extract() Fonksiyonu

Bu da benden olsun dedim. Extract fonksiyonu compact fonksiyonunun kısmen tersi gibi bir şey ve çoğu zaman hayat kurtarabiliyor. Bu fonksiyon da key => value yapısına sahip dizilerdeki elemanları alıp değişken olarak dışarı aktarıyor. Örnek vermek gerekirse:

$uye = ['isim' => 'Mustafa Zahid Efe', 'email' => 'mustafa@zahidefe.net'];
extract($uye);
echo $isim; // Ekrana Mustafa Zahid Efe değerini yazdıracaktır.
echo $email; // mustafa@zahidefe.net değerini yazdıracaktır.

Yazıyı paylaştıktan sonra Emre Abi sağolsun bir konuda uyardı. Bir güncelleme yapayım. Diyor ki:

GET ya da POST superglobal’leri için sakın extract fonksiyonunu kullanmayın. Sadece içerisinde ne olduğunu bildiğiniz veriler için extract fonksiyonunu kullanın. Aksi takdirde ciddi güvenlik zaafiyetlerine sebep olabilir.

Kendisine tekrar teşekkür ederim 🙂

Evet, bu yazıda anlatacaklarım bu kadar. Aslında çok daha güzel şeyler var ama şu an aklıma gelmediği için yazamadım. Kendim çok daha fazla ekleme yapmak isterdim ama artık başka yazıda. Eğer içerik işinize yaradıysa aşağıdaki ‘Thank You’ butonuna basmanız gerçekten çok güzel olur 🙂 Başka yazılarda görüşmek üzere, herkese iyi çalışmalar.

Hayat Kurtarıcılar, PHP Mustafa Zahid Efe 2 yorum