آشنایی با دستور match در php

تاریخ: 08 فروردین 1400

php در نسخه 8 خود امکانات بسیاری را برای بهینه سازی عملکرد برنامه ارائه داده است. یکی از این دستورات، دستور match می باشد که یک جایگزین مناسب برای دستور switch به شمار می رود.

دقت کنید که برای اجرا کردن دستور match به ورژن 8 زبان php نیاز دارید.

مثالی از کاربرد دستور switch

فرض کنید می خواهیم متن خطا را با توجه به کد خطا داشته باشیم:

 
switch ($code) {
    case 200:
    case 300:
        $mess = null;
        break;
    case 404:
        $mess = 'not found';
        break;
    case 500:
        $mess = 'server error';
        break;
    default:
        $mess = 'unknown status';
        break;
}

 

اکنون این کد را با استفاده از دستور match بازنویسی می کنیم:

 
$mess = match ($code) {
    200, 300 => null,
    404 => 'not found',
    500 => 'server error',
    default => 'unknown status',
};

 

مشاهده می کنیم که 15 خط به 6 خط کاهش یافت و کد ما خواناتر نیز گردید.

در نظر گرفته شدن مقدار و نوع در دستور match

دستور match بر خلاف دستور switch هم مقدار و هم نوع پارامتر ورودی را در نظر می گیرد:

 
$x = '1';
$z = match($x){
    1 => 1,
    default => 2,
};
echo $z;
//output: 2

 

چنانچه مشاهده می کنید، با اینکه مقدار x با case اول دستور match برابر است، ولی چون نوع آن فرق دارد، لذا case اول اجرا نمی شود و default اجرا خواهد شد.

اگر دستور match هیچ case صحیحی نداشته باشد و هم چنین مقدار default نیز در نظر گرفته نشد، یک خطای مهلک (fatal error) ایجاد می شود و اسکریپت متوقف می گردد:

 
$statusCode = 400;
$message = match ($statusCode) {
    200 => 'perfect',
};
//output: Fatal error Unhandled match value of type int

 

دقت کنید که در حال حاضر صرفا امکان نوشتن عبارت های کوتاه تک خطی ممکن است و عملا از دستور match برای تعریف و مقدار دهی یک متغیر استفاده می شود ولی ممکن است در نسخه های آینده، امکان قرار دادن بلوکی از دستورات به این دستور اضافه گردد.

 

 

دیدگاهتان را بنویسید

طراحی افزونه وردپرس