فریمورک محبوب لاراول به تازگی نسخه 𝟭𝟮.𝟮𝟭.𝟬 را منتشر کرد که این نسخه به همراه دو ویژگی جدید است که می تواند به طور جدی کدنویسی شما را بهبود ببخشد.
یک متود (method) جدید، whereValueBetween() در کوئری بیلدر و اعتبارسنجی سخت گیرانه برای مقادیر عددی و منطقی (boolean).
اگر از لاراول برای توسعه اپلیکیشن خودت استفاده میکنی، این مطلب رو از دست نده.
این سناریو رو در نظر بگیرید:
شما میخواهید یک مقدار(تاریخ) بین دو ستون start_date و end_date را چک کنید. قبلا برای انجام دادن این کار باید به این صورت عمل می کردیم:
Article::where('start_date', '<=', now()) ->where('end_date', '>=', now()) ->get();
یا حتی اینطوری یه کمی کثیف تر:
Article::whereRaw('? BETWEEN start_date AND end_date', [now()]) ->get();
اما حالا با استفاده از متود جدید whereValueBetween() کد ما خیلی تمیزتر خواهد بود:
Article::whereValueBetween(now(), ['start_date', 'end_date'])->get();
و تمام! این متود هدف کد را واضح تر و خواندن کوئری را آسان تر میکند. برای فیلترهای مبتنی بر زمان، رنج قیمت ها و یا هرنوع گزینه ای که نیاز به مقایسه در دو ستون داره، عالی است.
لاراول همچنین چند متود مرتبط دیگر برای شرایط پیچیده تر افزوده است:
orWhereValueBetween()
whereValueNotBetween()
orWhereValueNotBetween(
این توابع به شما انعطاف پذیری بیشتری برای نوشتن کدهای رسا ( و تمیز) و کوئری های قابل خواندن بدون نیاز به نوشتن شرطهای خام (raw conditions) می دهد.
این ویژگی (feature) می تواند تغییراتی محسوسی را به برنامه شما به ارمغان بیاورد اگر شما به یکپارچگی نوع داده (data type integriy) اهمیت می دهید.
حالا لاراول از اعتبارسنجی سخت گیرانه برای نوع (type) عددی و منطقی پشتیبانی میکند. با افزودن :strict به rule مدنظر، لاراول نه تنها مقدار رو بلکه نوع (type) را نیز اعتبارسنجی (validate) میکند.
مثال های مربوط به نوع عددی
Validator::make(['age' => '25'], ['age' => 'numeric:strict']); // fails (string) Validator::make(['age' => 25], ['age' => 'numeric:strict']); // passes
مثال های مربوط به نوع منطقی
Validator::make(['active' => true], ['active' => 'boolean:strict']); // passes Validator::make(['active' => '1'], ['active' => 'boolean:strict']); // fails
بدون استفاده از :strict لاراول کاملا سخاوتمندانه عمل می کند، 1 یا 'true' ( بعنوان رشته) به طور معمول پذیرفته می شوند. اما در در برخی موارد، اعتبارسنجی سخت گیرانه می تواند جلوی باگ های مرتبط به نوع داده را بگیرد.
این دو ویژگی ممکن به نظر کوچک برسند اما آنها می توانند منتهی شوند به:
کدهای تمیزتر و رساتر
انسجام بهتر داده و امنیت
نگهداری و دیباگ راحت تر
اگر شما همین الان از لاراول 12 استفاده می کنید، حتما به نسخه 12.21.0بروزرسانی کنید و این ویژگی ها ( features) را امتحان کنید. اینها بسیار مفید هستند خصوصا در پروژه هایی که خوانایی و قابلیت اطمینان (reliability) اهمیت زیادی دارد.