5 عادت بد هنگام کد زدن با PHP
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 2 دقیقه

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

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

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

$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
}

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

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4.8 از 5 رای

/@erfanheshmati
عرفان حشمتی
Full-Stack Web Developer

کارشناس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت، تولیدکننده محتوا

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

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

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