یه اشتباه رایج:
if (!empty($value)) {
// ...
}ظاهرش سادهست.
ولی ()empty فقط null رو خالی در نظر نمیگیره.
مقادیر مختلفی مثل:
0
"0"
false
""
null
[]
میتونن برای ()empty خالی محسوب بشن.
حالا فرض کن:
$discount = 0;
if (!empty($discount)) {
applyDiscount($discount);
}
اینجا ممکنه منطق برنامهت اون چیزی نباشه که انتظار داشتی؛ چون 0 از نظر ()empty مقدار خالی محسوب میشه.
اگر واقعاً میخوای مشخص کنی مقدار وجود داره و دقیقاً چه نوعی داره، مقایسه صریح خیلی وقتها انتخاب بهتریه:
if ($discount !== null) {
// ...
}زبان PHP به خاطر Type Juggling انعطاف زیادی داره؛
ولی همین انعطاف اگر حواست نباشه، تبدیل به باگ میشه.
هرچی پروژه بزرگتر میشه، مقایسههای دقیقتر ارزش بیشتری پیدا میکنن.
@CodeVerse_dev