Эти 5 вредных привычек в PHP-программировании нужно изменить!

PHP

После каждого представления проекта я проведем множество кодовых обзоров и часто вижу некоторые повторные ошибки. Следующие пять ошибок должны быть исправлены во времени, что исправляет их методы.

Эти 5 вредных привычек в PHP-программировании нужно изменить PHP Лучший язык в мире!

Проверить, пуст ли массив перед циклом?

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

foreachфункция цикла или массива(array_*)Может обрабатывать пустые массивы.

  • Нет необходимости сначала тестировать
  • Один слой отступа может быть уменьшен
$items = [];
// ...
foreach ($items as $item) {    // process on $item ...
}

Упакуйте все содержимое метода в оператор IF

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

Это не специфично для PHP, но я вижу это довольно часто. Вы можете уменьшить уровень отступа минимального кода, вернувшись раньше! Все «полезные» тела функции теперь находятся на первом уровне отступа

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']
}

Нам часто нужно проверить, определена ли переменная (вместоnull). В PHP для этого можно использовать функцию 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а такжеsprintf, мы можем просто использовать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а такжеarray_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
}

Спасибо за прочтение Если это было для вас полезно, обратите внимание на самородки "CRMEB". В Code Cloud есть наши проекты торговых центров с открытым исходным кодом и платные проекты знаний, все они разработаны на основе PHP. Вы можете использовать их для изучения и исследований. Следите за нами, чтобы оставаться на связи!