5 عادت بد هنگام کد زدن با PHP

ترجمه و تالیف : عرفان حشمتی
تاریخ انتشار : 04 شهریور 99
خواندن در 48 ثانیه
دسته بندی ها : پی اچ پی

در این مقاله نحوه اصلاح اشتباهات در کدزنی با زبان پی اچ پی آورده شده است.

چک کنید که آرایه تعریف شده قبل از حلقه خالی نباشد

$items = [];
// ...
if (count($items) > 0) {
    foreach ($items as $item) {
        // process on $item ...
    }
}

حلقه foreach یا تابع آرایه می‌تواند آرایه خالی را مدیریت کند.

  • از قبل نیازی به تست کردن نیست
  • یک سطح تورفتگی کمتر
$items = [];
// ...
foreach ($items as $item) {
    // process on $item ...
}

برای اینکه یاد بگیرید که چگونه بدون حلقه‌های for/foreach/while کد بزنید، به زودی مقاله‌ای را در این زمینه منتشر خواهیم کرد.

تمام محتوای یک متد را در یک عبارت if محاسبه کنید

function foo(User $user) {
    if (!$user->isDisabled()) {
        // ...
        // long process
        // ...
    }
}

این مورد مختص پی اچ پی نیست، اما آن را خیلی اوقات می‌بینیم.

همه بدنه این تابع اکنون در مرحله تورفتگی اول قرار دارند.

function foo(User $user) {
    if ($user->isDisabled()) {
        return;
    }

    // ...
    // long process
    // ...
}

چندین بار متد isset را صدا کنید

$a = null;
$b = null;
$c = null;
// ...

if (!isset($a) || !isset($b) || !isset($c)) {
    throw new Exception("undefined variable");
}

// or

if (isset($a) && isset($b) && isset($c) {
    // process with $a, $b et $c
}

// or 

$items = [];
//...
if (isset($items['user']) && isset($items['user']['id']) {
    // process with $items['user']['id']
}

ما اغلب باید بررسی کنیم که یک متغیر تعریف شده است و تهی نیست. در پی اچ پی، می‌توانیم این کار را با استفاده از تابع isset انجام دهیم. این می‌تواند چندین پارامتر را در بر گیرد!

$a = null;
$b = null;
$c = null;
// ...

if (!isset($a, $b, $c)) {
    throw new Exception("undefined variable");
}

// or

if (isset($a, $b, $c)) {
    // process with $a, $b et $c
}

// or 

$items = [];
//...
if (isset($items['user'], $items['user']['id'])) {
    // process with $items['user']['id']
}

متد echo را با sprintf ترکیب کنید

$name = "John Doe";
echo sprintf('Bonjour %s', $name);

این کد ممکن است کمی خنده‌دار به نظر برسد و هنوز هم آن را خیلی جاها می‌توان دید. به جای ترکیب echo andsprintf، می‌توانیم به راحتی از متد printf استفاده کنیم.

$name = "John Doe";
printf('Bonjour %s', $name);

با ترکیب دو متد، وجود کلید در یک آرایه را بررسی کنید

$items = [
    'one_key' => 'John',
    'search_key' => 'Jane',
];

if (in_array('search_key', array_keys($items))) {
    // process
}

آخرین خطایی که اغلب می‌بینیم استفاده مشترک از in_array andarray_keys است. همه این موارد را می‌توان با استفاده از array_key_exists جایگزین کرد.

$items = [
    'one_key' => 'John',
    'search_key' => 'Jane',
];

if (array_key_exists('search_key', $items)) {
    // process
}

همچنین می‌توانیم از isset نیز استفاده کنیم که بررسی می‌کند مقدار آن خالی نباشد.

if (isset($items['search_key'])) {
    // process
}

با تشکر از اینکه وقت خود را برای خواندن این مطلب گذاشتید. حتما با ما در ارتباط باشید و نظرات خود را در بخش کامنت‌ها بیان کنید.

منبع

گردآوری و تالیف عرفان حشمتی
آفلاین
user-avatar

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

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید