Регламент по оформлению php кода
REDS Group
б-р Черноморский, д. 17, к. 1, помещ. 4/2/5, Москва.
Услуги веб-мастерской:
01.01.1970

Оформление php кода

1. Кол-во переменных на странице - не должно превышать 4-х. При работе с компонентами все нужные данные записываем в массив $arResult


2. Названия переменных - Простые переменные писать строчными (в нижнем регистре), в качестве разделителя нижнее подчеркивание ('_').
Составные имена переменных писать в верблюжьей нотации, где первое слово начинается с маленькой буквы, все остальные с большой в стиле сamelCase.
Для явного указания типа переменной использовать префикс отражающий их тип - $dbUser, $obUser, $arUser, $strUser, $bUser... и т.д.

    //Правильно
    $error =
    $time_of_error =
    $error_processor =

    //Неправильно
    $error-processor =

3. Имена элементов в массивах - В источниках советуют использовать нижний регистр для обозначения переменных, но битрикс по умолчанию использует верхний регистр. Так что будем придерживаться верхнего регистра.
В качестве разделителя слов используется нижнее подчеркивание ('_'), не используется дефис ('-')

    //Правильно
    $arr['DETAIL_TEXT'] = 'Hello';

    //Неправильно
    $arr['DETAIL-TEXT'] = 'Hello';

4. Имена функций - Как правило, метод совершает какое-либо действие, поэтому желательно, чтобы из имени было понятно, какое именно действие будет совершаться.
Для этого используют префиксы или суффиксы
Cуффиксы:

Max - чтобы показать максимальное значение
Cnt [count: количество, подсчёт] - чтобы показать текущее значение какого-либо счётчика
Key - чтобы показать ключевое значение. Например: RetryMax содержит максимальное количество возможных попыток, а RetryCnt - номер текущей попытки
Префиксы:
Is - для обозначения вопроса
Get - получить значение
Set - установить значение
Если в имени переменной содержится аббревиатура, лучше вместо всех заглавных оставить только первую букву заглавной, а остальные написать строчными.
Каждое слово в имени класса с большой буквы и никаких символов, кроме букв латинского алфавита

    //Правильно
    GetHtmlStatistic()

    //Неправильно
    GetHTMLStatistic()

5. Одиночные и двойные кавычки - Осуществляя доступ к элементам массива, можете использовать как одинарные, так и двойные кавычки. Но выберите что-то одно.

    //Правильно
    $arr['DETAIL_TEXT'] = 'Hello';

    $arr["DETAIL_TEXT"] = "Hello";

    //Неправильно
    $arr['DETAIL_TEXT'] = "Hello";

6. Глобальные переменные - В именах глобальных переменных рекомендуется использовать префикс 'g'

    //Правильно
    global $gLog;

    global &$grLog;

7. Строки - В качестве отступов использовать табуляцию длиной равной 4 пробела.
Длина строки кода 80-120 символов
Использовать пустые строки для улучшения читаемости и обозначения связанных блоков/логических сегментов кода.


8. Комментарии - Многострочный комментарий в стиле (/* */)
Однострочный комментарий в стиле (// )

    //==============================================================================
    // CATEGORY LARGE FONT
    //==============================================================================

    //------------------------------------------------------------------------------
    // Sub-Category Smaller Font
    //------------------------------------------------------------------------------

    /* Title Here Notice the First Letters are Capitalized */

    /**
     * This is a detailed explanation
     * of something that should require
     * several paragraphs of information.
     */

    //This is a single line quote.

8.1. Комментарии - при написании функций или ajax-файлов. Нужно описать назначение файла (кратко), указать дату, автора и входные и выходные данные

    /*
    * create: 01-09-2021 autor: popkse
    * Генерирует pdf с qr кодом
    * на входе принимает значение url
    * на выходе ссылка на файл pdf
    */

8.2. Комментарии - при изменении функций или ajax-файлов. Нужно указать дату, автора и описать что было сделано

    /*
    * create: 01-09-2021 autor: popkse
    * Генерирует pdf с qr кодом
    * на входе принимает значение url
    * на выходе ссылка на файл pdf
    * update 02-09-2021 autor: nikita
    * изменял верстку pdf файла
    */

9. Ключевые слова PHP - true, false, null писать в нижнем регистре. Весь список ключевых слов можно посмотреть тут


10. Правила расстановки скобок () рядом с операторами и функциями - Не ставьте скобки сразу за операторами. Разделите оператор и скобки пробелом
Ставьте скобки непосредственно сразу за именем функции
Не используйте скобки в блоке return, если нет в этом необходимости

    //Правильно
    if (condition)
    {

    }

    while (condition)
    {

    }

    strcmp($s, $s1);

    return 1;

    //Неправильно
    if(condition)
    {

    }

    while(condition)
    {

    }

    strcmp ($s, $s1);

    return (1);

11. Конструкция if - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов

    //Правильно
    if ($expr1) {
        // тело if
    } elseif ($expr2) {
        // тело elseif
    } else {
        // тело else
    }

    //Допускается
    if ($expr1)
    {
        //тело if
    }
    elseif ($expr2)
    {
        //тело elseif
    }
    else
    {
        //тело else;
    }

    //Правильно, но мы не будем использовать
    if($a > $b):
        echo $a." больше, чем ".$b;
    elseif($a == $b): // Заметьте, тут одно слово.
        echo $a." равно ".$b;
    else:
        echo $a." не больше и не равно ".$b;
    endif;

    //Неправильно
    if ($expr1){ /*тело if*/ }
    elseif ($expr2){ /*тело elseif*/ }
    else{ /*тело else;*/ }

12. Конструкции while, do while - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов

    //Правильно
    while ($expr) {
        // тело конструкции
    }

    do {
        // тело конструкции
    } while ($expr);

    //Допускается
    while ($expr)
    {
        //structure body
    }

    do
    {
        //structure body;
    }
    while ($expr);

13. Конструкции for - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов
Разеберем выражение в скобках ($i = 0; $i < 10; $i++). После открытия и перед закрытием скобки пробел не нужен. Пробелы нужны между выражениями и опереторами.

    //Правильно
    for ($i = 0; $i < 10; $i++) {
        // тело for
    }

    //Допускается
    for ($i = 0; $i < 10; $i++)
    {
        //тело for
    }

14. Конструкции foreach - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов

    //Правильно
    foreach ($iterable as $key => $value) {
        // тело foreach
    }

    //Допускается
    foreach ($iterable as $key => $value)
    {
        //тело foreach
    }

15. Конструкции try, catch - Идем по стандарту PSR-2. Никаких других пробелов, отступов и т.д. Делаем так, как на примере. Скобочки все на месте, пробелы на месте, никаких лишних переносов

    //Правильно
    try {
        // тело try
    } catch (FirstExceptionType $e) {
        // тело catch
    } catch (OtherExceptionType $e) {
        // тело catch
    }

    //Допускается
    try
    {
        //тело try
    }
    catch (ExceptionType $e)
    {
        //тело catch
    }



Ознакомиться с правилами оформления кода от битрикс - тут


Ознакомиться со стандартами оформления php-кода PSR - тут


Неплохая статья в сжатом виде про оформление кода - тут