PHP Null Coalescing چیست؟ چه چیزی و چگونه استفاده می شود؟ اینها را در این درس خواهیم آموخت.

عملگر PHP Null Coalescing در PHP 7 معرفی شد. اگر عملوند اول وجود داشته باشد و تهی نباشد، عملوند اول را برمی گرداند و در غیر این صورت عملوند دوم را برمی گرداند.

نمونه های ادغام تهی PHP

// Örnek 1: 
echo $name = $_POST['name'] ?? 'nobody';
// Çıktı: nobody
// Örnek 1.1
if (isset($_POST['name'])) {
    echo $name = $_POST['name'];
} else {
    echo $name = 'nobody';
}
// Çıktı: nobody
// Örnek 1.2
echo $name = isset($_POST['name']) ? $_POST['name'] : 'nobody';
// Çıktı: nobody

در مثال 1، از آنجایی که هیچ داده پستی با نام نام وجود نداشت، مقدار nobody به متغیر $name اختصاص داده شد و چاپ شد. مثال 1 یک نسخه کوتاه شده از مثال های 1.1 و 1.2 با عملگر PHP Null Coalescing است. هر دو نتیجه یکسانی را برمی‌گردانند و معنای یکسانی دارند.

// Örnek 2
$first_name = 'Onur';
$last_name = null;
echo ($first_name ?? 'Ad Yok') . ' ' . ($last_name ?? 'Soyad Yok');?> 
// Çıktı: Onur Soyad Yok

در مثال 2، از آنجایی که متغیر $first_name دارای داده است، متغیر را در شرایط اول برگرداند. با این حال، از آنجایی که متغیر $last_name تهی بود، عملوند دوم را در شرایط دوم برگرداند و جمله 'No Surname' را چاپ کرد.

PHP Null Coalescing Operator Chaining

می‌توانیم از عملگر PHP Null Coalescing با زنجیر کردن آن استفاده کنیم.

// Örnek 3
echo $name = $_GET['name'] ?? $_POST['name'] ?? 'nobody';
// Çıktı: nobody
// Örnek 3.1
if (isset($_GET['name'])) {
    echo $name = $_GET['name'];
} elseif (isset($_POST['name'])) {
    echo $name = $_POST['name'];
} else {
    echo $name = 'nobody';
}
// Çıktı: nobody

در مثال 3، PHP داده‌های $_GET['name'] را به متغیر $name اختصاص می‌دهد و اگر $_GET['name'] تعریف شده باشد، آن را چاپ می‌کند. اگر تعریف نشده است، متغیر $_POST'name'] را بررسی کنید، اگر $_POST'name'] تعریف شده است، آن را دور انداخته و چاپ می کند، در غیر این صورت، داده های 'nobody' را دور انداخته و چاپ می کند. مثال 3.1 همان نتیجه مثال 3 را برمی گرداند و همان معنی را دارد. مثال 3.1 یک نسخه طولانی تر از مثال 3 است که با دستور شرطی if-elseif-else کدگذاری شده است. مثال 3 یک نسخه کوتاه کد شده با PHP Null Coalescing است.