Php Null Operatörü

php

Merhaba ben Akif Biçek sizlerle birlikte php de sıfırdan ileri düzey makelelerimizin ondördüncüsüne başlamış bulunuyoruz. Bir önceki php ternary  makalemizi okuduysanız sizlerle birlikte php null operatörü yazımız ile başlıyoruz.

Php Null Operatörü

Php null operatörü bir değişkenin değerinin boş olup olmadığını kontrol eden operatördür. Yapı bakımından ternary ifadesinin sadece null değerini tespitleme amacıyla kısaltılmış bir biçimidir. Basit bir kullanımı vardır.

Php null operatör genellikle form işlemlerinde kullanılsada. Herhangi bir değişkenin içeriğinin yada değerinin null olup olmadığınıda kontrol edebilirsiniz. Burada önemli olan form post yada get işlemlerinde kontrol edilecek değer kullanıcı tarafında boş gönderilse bile null operatörü burada bir işe yaramıyor bu olayı yazımızın sonunda bir örnek ile anlatacağız.

Yapısı ternary gibi işler tek satırlıktır ve sadece iki soru işatetinden “??” oluşur soru işaretinin sağ tarafı true sol tarafı false bloğudur yani değişkenimiz null değil ise true null ise false tarafı çalışmakta.

True tarafı bu değişkennull değerinde değil manasında , false ise bu değişken null değerinde manasında.

Php null operatörü true tarafını çalıştıran değişken değerleri

  1. $degisken = “string bir değer”;
  2. $degisken = 35;(integer bir değer).
  3. $degisken = “”;(boş değer).
  4. $degisken = (diğer tüm veri tipleri);

Php null operatörü boş string değeride dolu olarak kabul ediyor ve true değeri kabul ediyor

Php null operatörü false tarafını çalıştıran değişken değerleri

  1. Değişken tanımlanmamışsa.
  2. $degisken;(değer atanmamışsa).
  3. $degisken = null;(değişken değeri direkt olarak null atanmışsa)

Bu koşullarda false bloğu çalışır.

Burada dikkat etmeniz gereken null değeri ile (“”) boş string değeri arasındaki farkı anlamanız null tamamiyle tanımsız anlamındadır fakat (“”) boş string değeri tanımsız değildir null değerine karşılık gelemez.

Eğer null operatörnün yapısını tam olarak anlamak isterseniz php ternary  yazımızı okuyunuz.

yapısı;
    $degisken(TRUE BLOĞU) ?? FALSE BLOĞU;

True bloğuna kontrol edilecek değişken yazılır şayet true dönerse işlemin sonucu değişkenin değeri olur.

<?php
$deger = null;
echo $deger ?? 'Değişken Null Değerinde';
?>
Değişken Null Değerinde

Yukarıda php null operatör ifadesinin sonucu false dönmüştür false olunca ise sağ taraftaki string değer echo komutu ile yazdırırlmıştır. Fakat burda echo komutu şart değil tıpkı ternary de olduğu gibi isterseniz değişkenede atayabilirsiniz.

<?php
$deger = null;
echo $deger!=null ? $deger : 'Değişken Null Değerinde';
?>
Değişken Null Değerinde

Yukarıdaki örnek birinci örneğimizin ternary ile yapmılmış halidir işte php null operatörü terrnary ifadesinin kısaltılmış halidir.

<?php
$deger = null;
$degisken = $deger ?? 'Değişken Null Değerinde';
echo $degisken;
?>
Değişken Null Değerinde

Yani burada olan değişkenin değerini koşula göre atanmasını istiyorsunuz.

<?php
$deger;
$degisken = $deger ?? 'Değişken Null Değerinde';
echo $degisken;
?>
Değişken Null Değerinde

Değişkenin değeri tanımlanmamış.

<?php
$degisken = $deger ?? 'Değişken Null Değerinde';
echo $degisken;
?>
Değişken Null Değerinde

Değişken tanımlanmamış.

<?php
$deger = "";
$degisken = $deger ?? 'Değişken Null Değerinde';
echo $degisken;
?>

Değişkenin değeri boş olduğu için ekrana hiçbirşey yazdırılmıyacak.

<?php
$deger = 35;
$degisken = $deger ?? 'Değişken Null Değerinde';
echo $degisken;
?>
35

Değişkenimizin değeri null olmadığı için true tarafı çalıştı ve işlem sonucu değişkenimizin değeri atandı.

<?php
$deger = "Teknopati";
$degisken = $deger ?? 'Değişken Null Değerinde';
echo $degisken;
?>
Teknopati

Ve değerin türü ne olursa olsun sadece null olmasın diyoruz. Hertürlü true değerini döndürürüz.

Ternary de olduğu gibi echo yada değişkene atama zorunluluğunuz yok. Yalın haldede kullanabilirsiniz.

<?php
$deger = null;
$deger ?? die("değer boş geldi");
echo "İşlemler yapılıyor....";
?>
değer boş geldi

Buradaki die komutu içine aldığı değeri ekrana yazdırıp kendinden sonraki satırları okunmamasını sağlıyor. Kısacası php die gördüğü yerde kodlar ölüyor işlem sonlandırılıyor burada da kısacası değer null ise ekrana mesajı yazdır ve kodu öldür diyoruz.

Gel gelelim baştaki belirtiğimiz form işlemlerine burada yapılan genel bir hata vardır. Kullanıcı input’a boş değer girdiğinde ve bunu post ettiğinde genellikle (“”) boş string değeri post ediliyor. Yukarıda da gördüğümüz gibi bu değer null değil fakat bu değeri biz veritabanına böyle kayıt edemeyiz yada kullanıcı bu alanı zorunlu olarak girmesi gerekiyor.

nulloperator.php
<!DOCTYPE html>
<html>
<body>
<h2>Php Null Operatörü</h2>

<form method="POST" action="nulloperatorpost.php">
  <label for="isim">Adınız:</label><br>
  <input type="text" id="isim" name="isim"><br>
  <input type="submit" value="Gönder">
</form> 

<p>İsminizi yazın ve gönder butonuna tıklayın</p>

</body>
</html>
nulloperatorpost.php
<?php
echo $_POST['isim'] ?? 'isim gelmedi';
?>

Örnekteki işlemimiz post edilen değeri ikinci sayfamızda görmek fakat burada isim alanının zorunlu olduğunu düşünelim ve kullanıcı bu alanı boş olarak post ederse karşı tarafta null operatörümüz bunu yakalıyacakmi diye test edelim.

İşlemimize başlamadan çalışıyormu diye kontrol edelim.

php null operatörü
php null operatörü

İsmimizi yazdık ve gönder butonuna tıklayalım.

php null operatörü
php null operatörü

Gördüğümüz gibi işlemimiz rahatlıkla çalışmakta değer dolu ise direk değeri post edilen sayfamızda almaktayız. Peki ya boş değer gönderirsek.

php null operatörü
php null operatörü

Kutucuğun içini boş bırakıp göndere tıklıyoruz.

php null operatörü
php null operatörü

Karşılaştığımız sonuç bu şekilde. Bu bizim istemediğimiz bir durum çünkü bu alanın doldurulması zorunludur.Bunun çözümü diğer koşulları kullanmaktır fakat illaki siz ben null operatörünü kullanmak istiyorum diyorsanız bunun çözümüde mevcuttur. En ideal olarak kullanımını sizlere aşağıda örnek olarak vereceğim.

nulloperator.php
<!DOCTYPE html>
<html>
<body>
<h2>Php Null Operatörü</h2>

<form method="POST" action="nulloperatorpost.php">
  <label for="isim">Adınız:</label><br>
  <input type="text" id="isim" name="isim"><br>
  <input type="submit" value="Gönder">
</form> 

<p>İsminizi yazın ve gönder butonuna tıklayın</p>

</body>
</html>
nulloperatorpost.php
<?php
function is_string_null($val){
  return ($val == "") ? null : $val;
}
$isim = is_string_null($_POST['isim']) ?? header("Location:uyari.php").exit();
echo "Post edilen isim değeri: ".$isim;
?>

Bu sorunu aşmak için küçük bir fonksiyon yazmanız yeterli.yukarıda bizim oluşturduğumuz fonksiyon içine aldığı değeri boş string ifadesi ile karşılaştırıyor eğer eşit ise dışarıya null değerini gönderiyor buda null operatöründe bizim işimize yarıyor.

Php null operatörü yazımızı burada sonlandırıyoruz.

Php null operatörü hakkında daha fazla bilgi için php ‘nin sitesini ziyaret edin. Veya w3schools ‘ un sitesini ziyaret edin ve PHP Conditional Assignment Operators başlığının altında “Null coalescing” göz atın .

Bir sonraki php goto makalemizde görüşmek dileğiyle.

E-bültene Abone Ol Merak etmeyin. Spam yapmayacağız.

Yazar

İşim Yok Hobilerim Var

İlgili Yazılar

1 Yorum

If you want to use the photo it would also be good to check with the artist beforehand in case it is subject to copyright. Best wishes. Aaren Reggis Sela

Cevapla

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Hızlı yorum için giriş yapın.

Başka Yazı Yok

Kayıt Ol

Zaten üye misiniz? Giriş Yap

Giriş Yap

Henüz üyeliğiniz yok mu? Kayıt Ol