php Code Refactoring Series - part5

سری پست های اصلاح کد ها در پی اچ پی
سری پست های اصلاح کد ها در پی اچ پی

اگر با سری پست های اصلاح کد های پی اچ پی آشنایی ندارید و یا سایر قسمت ها را نخوانده اید از اینجا شروع کنید:

https://virgool.io/@vahiiiid/php-code-refactoirng-series-introduction-pckzxvccjw6f


این قسمت بریم سراغ یک تابع دیگه ای از پی اچ پی یعنی ()array_filter و از اون برای تمیز کردن کد ها استفاده کنیم.

این تابع قابلیت این رو داره که داخل یک آرایه ای که بهش معرفی می کنیم بگرده و ایندکس هایی که ما نمیخواهیمشون رو حذف کنه و یه آرایه تر و تمیز به ما تحویل بده و اینجا تو داکیومنت پی اچ پی هم می تونید بیشتر در موردش بخونید.

اما چطور تکه کد زیر رو با این تابع باز نویسی کنیم:

$array = [1,7,9,null,0];

foreach ($array as $item) {
    if (!$item) {
        //ایندکس های مشکل دار رو رد میکنیم
        continue;
    }
    
    //اینجا میخواهیم یک عملیاتی فقط روی اعداد صحیح بزرگتر از صفر انجام دهیم
}

در کد بالا مجبوریم که یک if داخل foreach بندازیم تا اگر دیتایی که نمی خواهیم داخل آرایه بود با استفاده از continue به دور بعد حلقه بریم و روی اون عملیاتی انجام ندیم که به خطا بخوریم.

خوب با استفاده از ()array_filter می تونیم از آرایه مطمئن بشیم و تمام موارد مشکل دار برای ما مثل null و یا صفر رو حذف کند:

$array = [1,7,9,null,0];

foreach (array_filter($array) as $item) {
    //اینجا میخواهیم یک عملیاتی فقط روی اعداد صحیح بزرگتر از صفر انجام دهیم
}

اما همان طوری که تو داکیومنت پی اچ پی در مورد ()array_filter دیدیم می تونیم به عنوان ورودی دوم یک تابع به اون پاس بدیم تا خودمون داده رو پالایش کنیم.

پس بیاید دوباره کد رو این بار به این صورت بنویسیم که به صفر هم نیاز داریم یعنی فقط null رو از آریه حذف کنیم:

$array = [1,7,9,null,0];

$array = array_filter($array, function ($input){
    return is_int($input);
});
// $array -> 1,7,9,0
foreach ($array as $item) {
    //اینجا میخواهیم یک عملیاتی فقط روی اعداد انجام دهیم
}

اینجا یک closure function نوشتیم و داخل آن از تابع ()is_int استفاده کردیم که ببینیم مقداری که هر سری داخل تابع میاد عدد هست یا نه، چون برای مقدار null این تابع false برمی گردونه و وقتی return false داخل تابع داشته باشیم array_filter اون مقدار رو از تابع حذف می کنه، در آخر آرایه ما همون جوری میشه که انتظار داشتیم.

خوب همون طوری که دیدیم تابع ()array_filter خیلی میتونه به تمیز کردن دیتا مخصوصا زمانی که میخواهیم از ورودی تابع مطمئن بشیم کمک کنه و درصد اشتباه و خطا رو کم کنه ;)

لطفا نظرتون رو توی کامنت ها بنویسید تا این سری پست های اصلاح کد های پی اچ پی رو با هم دیگه کامل تر کنیم.

معرفی و مشاهده سایر پست های اصلاح کد های پی اچ پی

راستی لایک هم لطفااااااا یادتون نره :)