PHP: Полезные фишки и лайфхаки, о которых Вы могли не знать

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

Первый и, возможно, самые полезный хак — приучите себя писать код в одном стиле. Другими словами пишите одинаково — делайте одинаковые отступы, ставьте фигурные скобки в одних и тех же местах (например всегда в той де строке где цикл и условие), называйте переменные в одном стиле (например $camelStyle) и т.п. Это позволит Вам гораздо лучше ориентироваться в своем коде. И да… это распространяется на любой язык программирования.

Второй хак заключается в том, что бы Вы собирали часто используемые функции в одном месте. Пишите свои мини (а может и не мини) библиотеки. Это экономит огромное количество времени — все что Вам нужно всегда будет под рукой. Да, это тоже распространяется на любой язык программирования 🙂

Теперь, пожалуй более детально перейдем к PHP.

3) Создавайте переменные одного типа, с одним и тем же начальным значением в одну строку.

$a = $b = $c = 0;
/* Вместо
$a = 0; $b = 0; $c = 0;
*/

4) Используйте краткую запись условного оператора if.

$a = $b > 10 ? 1 : 0;
/* Вместо
if($b > 0) {
  $a = 1;
} else {
  $a = 0;
}
*/

5) Используйте inline (анонимные) функции, если они нужны всего один раз.

$a = array(3, 2, 5, 6, 1);
usort($a, function ($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
});
/* Вместо
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
usort($a, "cmp");
*/

6) Пользуйтесь функцией print_r с возвратом значения в виде строки а не выводом на экран. Это очень удобно использовать для логирования запросов.

file_put_contents('file.txt', print_r($_REQUEST, true));
/* Вместо
$str = '';
foreach($_REQUEST as $k => $v) {
   $str .= $k.'='.$v."\n";
}
file_put_contents('file.txt', $str);
*/

7) Всегда проверяйте данные на пустоту/наличие. Это позволит избежать Notice которые добавляют кучу мусора в логи.

$_GET['data'] = empty($_GET['data']) ? '' : $_GET['data'];

8) Используя цикл for, создавайте переменные цикла и итерационные действия внутри объявления цикла.

for($i = 0, $j = 100; $i != $j; $i++, $j--) {
   echo $i.' '.$j;
}
/* Вместо
$j = 100;
for($i = 0; $i != $j; $i++) {
   echo $i.' '.$j;
   $j--;
}
*/

9) Вычисляйте количество итераций цикла заранее, если возможно, применяйте хак #8.

$a = array(1, 2, 3, 4, 5);
for($i = 0, $c = count($a); $i < $c; $i++) {
   echo $a[$i];
}
/* Вместо
for($i = 0; $i < count($a); $i++) {
   echo $a[$i];
}
*/

10) Используйте предопределенные константы __DIR__, PHP_EOL, __FILE__, __LINE__, DIRECTORY_SEPARATOR и другие. Они помогут вам избежать огромной головной боли...

11) Если вопрос не принципиален, используйте глобальную переменную $_REQUEST, вместо отдельных $_GET и $_POST.

12) Создавайте переменные внутри условий.

if($db = mysqli_connect()) {
   $db->close();
}
/* Вместо
$db = mysqli_connect();
if($db) {
   $db->close();
}
*/

13) Используйте статические классы для хранения настроек одной группы, вместо создания множества переменных.

class DBsettings
{
    public static $server   = 'localhost';
    public static $user   = 'user';
    public static $password   = 'password';
    public static $base   = 'base';
}
/* Вместо
$server   = 'localhost';
$user   = 'user';
$password   = 'password';
$base   = 'base';
*/

14) Не забывайте про функцию implode, которая является обратной функцией explode.

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

if($someBool 
  && ($someBool2 || (!$someBoll2 && $someInt > 0))
  && !hadrFunction() 
  && !veryHadrFunction()) {
  //Do some code...
}
Запись опубликована в рубрике PHP с метками , , , , , , , , . Добавьте в закладки постоянную ссылку.