Перейти к содержанию

Правила стилистического оформления кода на PHP

Общее

Все наименования переменных и функций должны быть написаны в стиле camelCase.

Хорошо:

$countUsers = 5;
$pageNumber = 1;

// ...

public function getId()

Плохо:

$count_users = 5;
$PageNumber = 1;

public function get_id()


Все наименования классов, треитов, интерфейсов должны быть написаны в стиле UpperCamelCase.

Хорошо:

class BasketItem

Плохо:

class basketItem


Тела всех языковых конструкций, в которых это необходимо, нужно открывать и закрывать с новой строки.

Хорошо:

foreach($orders as $orderId => $order)
{
   if (!$order->isPaid())
   {
      // ...
   }
}
Плохо:
foreach($orders as $orderId => $order){
   if (!$order->isPaid()){
      // ...
   }
}


Переменные

При инициализации переменных до и после "=" должны быть пробелы. Это касается и операций +=, -= и т.д.

Хорошо:

$countUsers = 5;
$orders = [];
$order = new Order();

Плохо:

$countUsers=5;
$orders =[];
$order= new Order();


При инициализации переменных каждая должна находиться на новой строке.

Плохо:

$countUsers = 5; $orders = []; $order = new Order();


При инициализации ассоциативных массивов => должен располагаться на одном уровне для текущего уровня вложенности и иметь пробел до и после себя. Каждая пара ключ-значение должна располагаться на новой строке.

Хорошо:

$result = [
   'name'   => 'Иван',
   'age'    => 16,
   'groups' => [
      [
         'title'       => 'Группа 1',
         'description' => 'Описание группы'
      ],
      [
         'title'       => 'Группа 2',
         'description' => 'Описание группы'
      ]
   ]
];
Плохо:
$result = [
   'name'=>'Иван', 'age'=>16,
   'groups' => [
      [
         'title' => 'Группа 1',
         'description' => 'Описание группы'
      ],
      [
         'title' => 'Группа 2',
         'description' => 'Описание группы'
      ]
   ]
];


Во всех случаях перечисления через запятую в одну строку пробел должен быть только после запятой.

Хорошо:

$this->isAvailable(true, 5, [1, 2, 3]);
$colors = ['black', 'white'];

Плохо:

$this->isAvailable(true,5,[1,2,3]);
$colors = ['black' , 'white'];


Массивы должны быть в новом стиле.

Хорошо:

$orders = [];

Плохо:

$orders = array();
$users = Array();


При обращении к свойствам или методам объекта не нужно ставить пробел перед и после ->.

Хорошо:

$user->getId();

Плохо:

$user -> getId();

Функции

При объявлении и вызове функции после имени не нужен пробел.

Хорошо:

public static function fing(int $id) : User
{
   // Тело функции
}

// ...

$user = User::find(1);

Плохо:

public static function fing (int $id) : User
{
   // Тело функции
}

// ...

$user = User::find (1);


При объявлении функции до и после ":" должны быть пробелы.

Хорошо:

public static function fing(int $id) : User
{
   // Тело функции
}

Плохо:

public static function fing(int $id):User
{
   // Тело функции
}


При объявлении класса, метода, свойства - необходим phpDoc. Хорошо:

/**
*Do something
*@param int $id
*@return User
*/
public static function fing(int $id) : User
{
   // Тело функции
}

Плохо:

public static function fing(int $id) : User
{
   // Тело функции
}


При вызове анонимной функции после function должен быть пробел, фигурная скобка при этом находится на уровне вызова.

Хорошо:

array_map(function () {
   // Тело функции
}, $numbers);

Плохо:

array_map(function()
{
   // Тело функции
},
$numbers);


При вызове методов с возможными ошибками, эти ошибки необходимо обрабатывать в блоках try/catch. Хорошо:

public function doSomething()
{
    try
    {
        doSomethingElse();
    }
    catch (\Throwable $exception)
    {
        //Обработка ошибки
    }
}

К началу