Appearance
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}- получение данных, возвращаетmixedset{UpperCamelCase}- установка значений, возвращаетselfis{UpperCamelCase}- проверка на истину, возвращаетboolhas{UpperCamelCase}- проверка на существование, возвращаетboolprocess{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 в случае процедур)
Свойства должны иметь тип данных
Методы и свойства в классе должны располагаться в следующем порядке:
abstract publicabstract protectedabstract privatestatic publicstatic protectedstatic privatepublicprotectedprivate
Условия if
В случае наличия большого количества кода внутри условия if следует “инвертировать” if и вынести перед кодом
php
// ❌ Неправильно.
if($iSomeVar > 0){
//Тут большое количество строк >20
}
// ✅ Правильно.
if($iSomeVar == 0){
return;
}
//Тут большое количество строк >20