Skip to content

PHP Codestyle v8.*

Использование скобок “{” и “}”

php
//В логике
if (bSomeCondition) {
 doSomeThing();
} else {
 doAnother();
}

foreach ($arResult['ITEMS'] as $key => $arItem) {
    doSomeThing($arItem);
    $arArray[$key] = $arItem;
}
html
<?php
//В шаблонах
?>
<?php if(condition): ?>
	<div>
		<?php echo someThing(); ?>
	</div>
<?php else: ?>
	<?= another(); ?>
<?php endif; ?>

<?php  foreach($arResult['ITEMS'] as $arItem): ?>
	<?php echo $arItem['NAME']; ?>
<?php endforeach; ?>

Названия

При выборе названия для переменной (директории/файла) следует учитывать следующие правила:

  • Не допускается транслитерация, перевод слова может помочь найти он-лайн переводчик
php
// ❌ Неправильно.
$obTovar = getTovar();

// ✅ Правильно.
$obProduct = getProduct();
  • Следует избегать сокращений. Исключением является названия params, lang, nav
php
// ❌ Неправильно.
$obCatalogMess = getCatalogMess();

// ✅ Правильно.
$obCatalogMessage = getCatalogMessage();
  • Названия свойства класса начинаются с маленькой буквы в стиле snake_case.
  • Названия классов, директорий и файлов начинаются с большой буквы. Желательно в одно слово или в стиле PascalCase
  • Названия переменных, методов и функций начинаются с маленькой буквы в стиле camelCase
php
// ❌ Неправильно.
$Catalog_message = Get_catalog_message();

// ✅ Правильно.
$obCatalogMessage = getCatalogMessage();
  • Название должно отражать суть хранимых данных
php
// ❌ Неправильно.
$b = getSomeThing();

// ✅ Правильно.
$strSomeThing = getSomeThing();
  • Название переменной в обязательном порядке должно содержать префикс, отражающий тип данных. Исключениями являются: $i, $k, $_instance
    • $ar{UpperCamelCase} - массив
    • $ob{UpperCamelCase} - объект
    • $rs{UpperCamelCase} - ресурс
    • $str{UpperCamelCase} - строка
    • $i{UpperCamelCase} - целое число
    • $f{UpperCamelCase} - число с плавающей запятой
    • $b{UpperCamelCase} - булево
    • $m{UpperCamelCase} - mixed
php
//Массивы
// ❌ Неправильно.
$some_array = array();
// ✅ Правильно.
$arSomeArray = array();


//Объекты
// ❌ Неправильно.
$some_class = new SomeClass();
// ✅ Правильно.
$obSomeClass = new SomeClass();

//ресурсы
// ❌ Неправильно.
$some_resource = SomeClass::getList();
// ✅ Правильно.
$rsSomeResource = SomeClass::getList();

//Строки
// ❌ Неправильно.
$some_text = "Here some text";
// ✅ Правильно.
$strSomeText = "Here some text";

//Integer
// ❌ Неправильно.
$some_integer_var = 42;
// ✅ Правильно.
$iSomeIntegerVar = 42;

//Float
// ❌ Неправильно.
$some_float_var = 42.578;
// ✅ Правильно.
$fSomeFloatVar = 42.578;

//Boolean
// ❌ Неправильно.
$some_var = false;
// ✅ Правильно.
$bSomeVar = false;

//mixed
// ❌ Неправильно.
$some_var = get_some_mixed_value();
// ✅ Правильно.
$mSomeVar = getSomeMixedValue();
  • Названиям методов и функций следует давать префиксы:
    • get{UpperCamelCase} - получение данных, возвращает mixed
    • set{UpperCamelCase} - установка значений, возвращает self
    • is{UpperCamelCase} - проверка на истину, возвращает bool
    • has{UpperCamelCase} - проверка на существование, возвращает bool
    • process{UpperCamelCase} - выполнение каких либо операций, возвращает void

Исключением является send, run

  • protected и private свойства и метода в обязательном порядке должны иметь префикс _ в названии
php
// ❌ Неправильно.
class SomeClass
{
    protected $some_protected_var = null;

    private function doSomethingPrivate()
    {

    }
}
// ✅ Правильно.
class SomeClass
{
    protected ?int $_some_protected_var = null;

    private function _doSomethingPrivate(): void
    {

    }
}

Порядок объявления методов и свойств

Методы должны иметь тип возвращаемого значения (или void в случае процедур)

Свойства должны иметь тип данных

Методы и свойства в классе должны располагаться в следующем порядке:

  1. abstract public
  2. abstract protected
  3. abstract private
  4. static public
  5. static protected
  6. static private
  7. public
  8. protected
  9. private

Условия if

В случае наличия большого количества кода внутри условия if следует “инвертировать” if и вынести перед кодом

php
// ❌ Неправильно.
if($iSomeVar > 0){
    //Тут большое количество строк >20
}
// ✅ Правильно.
if($iSomeVar == 0){
    return;
}
//Тут большое количество строк >20