PHP isset Nedir - PHP isset Kullanımı

Son Güncelleme: 13 Şubat 2020

PHP'de isset birçok geliştiricinin tam olarak ne olduğunu bilmediği, bilse de nerede kullanması konusunda emin olamadığı yapılardan birisidir. Bu yazıda, PHP isset'in ne olduğunu ve nerede isset kullanmanız ya da kullanmamanız gerektiğini, isset empty farkını anlatacağım. Bu yazının sonunda, muhtemelen isset ile ilgili daha önceden bilmediğiniz bir şeyler öğrenmiş olacaksınız.

PHP isset Nedir?

Sözlük tanımı ile, isset değişken tanımlı mı değil mi diye bakan bir PHP yapısıdır (language construct). Burası şaşırtıcı gelebilir, ama isset bir fonksiyon değildir; aksine, isset de echo, include, require, print veya die gibi PHP yapılarından birisidir. PHP'de isset, eğer değişken tanımlıysa ve değeri null değilse true değerini, aksi durumda false değerini döndürecektir. Öte yandan, isset birden fazla argüman alabilmekte olup, birden fazla argüman alması durumunda her birinin geçerli olması hâlinde true değerini döndürmektedir. Son olarak, isset ifadeler veya sabitler ile çalışmamaktadır.

PHP isset Kullanımı

PHP isset kullanımı, bir değişkenin tanımlı olup olmadığını, tanımlıysa da değerinin null olup olmadığını kontrol etmek içindir.

$degisken = null;
/* alttaki örnekte, degisken değeri null dolayısı ile ilk isset false */
/* tanimlanmamisDegisken de tanımlanmamış dolayısıyla yine isset false */
var_dump($deger = isset($degisken) || isset($tanimlanmamisDegisken)); /* false */
/* alttaki örnek true çünkü deger değişkeninin değeri false, null değil.*/
var_dump(isset($deger)); /* true */

Bu kullanım haricinde, her ne kadar array_key_exists gibi bir anahtarın bir dizide var olup olmadığını ve değerinin null olup olmadığını kontrol etmek için PHP fonksiyonları da olsa, isset dizi elemanları için de çalışmaktadır.

var_dump(isset($_POST['email'])); /* array_key_exists('email', $_POST) şeklinde de yazılabilirdi */
var_dump(isset($nesne->ozellik)); /* eğer ozellik özelliğinin olup olmadığı kontrol edilecekse property_exists kullanmanız gerekir. */

Diğer yandan, PHP isset nedir kısmında da belirttiğim gibi, isset birden fazla argüman alabilmektedir.

var_dump(isset($_POST['email'], $_POST['ad'])); /* isset($_POST['email']) && isset($_POST['ad']) şeklinde de yazılabilir, ama yazmayın. */

Son olarak, PHP 7.0 itibarıyla nerede isset kullanmamanız gerektiği ise alttaki örnekte görülebilir.

$ad = isset($ad) ? $ad : 'default'; /* PHP 7.0 öncesi */
$ad = $ad ?? 'default'; /* PHP 7.0 ve sonrası */
$ad ??= 'default'; /* PHP 7.4 ve sonrası */

PHP isset ve empty Farkı

PHP isset'in eğer değişken tanımlanmadıysa, veya değeri null ise false döndürdüğünü, aksi durumda true döndürdüğünü anlatmıştım. PHP isset kullanımı kısmındaki ilk örnekte de gördüğünüz gibi, eğer değişken değeri false olsa da, isset true döndürmektedir. empty ise, her ne kadar isset'in yaptığı gibi bir değişkenin tanımlı olup olmadığını ve değerinin null olup olmadığını kontrol etse de, aynı zamanda değerinin false veya 0 olup olmadığını da kontrol eder.

[$degiskenA, $degiskenB] = ['0', false];
var_dump(isset($degiskenA, $degiskenB)); /* true */
var_dump(!empty($degisken) || !empty($degiskenB)); /* false */

Özet

Özetle, PHP'de isset, değişkenin tanımlı olup olmadığını, değerininse null olup olmadığını kontrol etmek için kullanılmakta olup, birden fazla argüman alabilmektedir. empty'den farkı, empty'nin isset'in yaptığı kontrollerin yanı sıra, false ve 0 gibi değerleri de kontrol etmesidir. 

Burak Özdemir

Burak Özdemir

Fethiye'de doğdum, Çanakkale Fen Lisesi ve İTÜ Bilgisayar Mühendisliği mezunuyum. Web geliştirme ile uğraşıyorum.