Правила оформления PHP-кода

Facebook
Twitter
Vkontakte
Telegram

1. Отступы

Отступы улучшают читабельность кода. Для их оформления используйте четыре пробела (но не знак табуляции).

Хорошо
            
            <?php
    switch ($expr) {
        case 1:
            echo 'Uno';
            break;
        case 2:
            echo 'Dos';
            break;
        case 3:
            echo 'Tres';
            break;
        default:
            echo 'Hola';
            break;
    }
?>
			
      	  
Плохо
            
            <?php
  switch ($expr) {
      case 1:
       echo 'Uno';
      break;
    case 2:
      echo 'Dos';
     break;
              case 3:
              echo 'Tres';
                  break;
     default:
         echo 'Hola';
      break;
}
?>
            
          

2. Ключевые слова и константы true / false / null

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

Хорошо
            
            <?php
    $equal = null;
    if ($a > $b) {
        echo "a больше, чем b";
        $equal = false;
    } elseif ($a == $b) {
        echo "a равен b";
        $equal = true;
    } else {
        echo "a меньше, чем b";
        $equal = false;
    }
?>
            
          
Плохо
            
            <?PHP
	$equal = NULL;
	If ($a > $b) {
	    ECHO "a больше, чем b";
	    $equal = False;
	} ELSEif ($a == $b) {
	    Echo "a равен b";
	    $equal = TRUE;
	} ELSE {
	    eCHO "a меньше, чем b";
	    $equal = falSE;
	}
?>
            
          

3. Определение пространств имён и блоков импорта

  1. Оставляйте одну пустую строку после определения пространства имён.
  2. Импорт пространств имён располагайте после определения пространства имён.
  3. Для каждого импорта пространства имён используйте отдельную строку со своим use.
  4. После блока импорта оставляйте одну пустую строку.
Хорошо
            
            <?php

    namespace Vendor\Package;

    use FooClass;
    use BarClass as Bar;
    use OtherVendor\OtherPackage\BazClass;

    // ... далее следует PHP-код ...
?>
	        
	    
Плохо
            
            <?php

    namespace Vendor\Package;
    use FooClass, BarClass as Bar;
    use OtherVendor\OtherPackage\BazClass;
    // ... далее следует PHP-код ...
?>
   			
        

4. Методы и аргументы

  1. Пробел после имени метода.
    После имени метода не должно быть пробела.
  2. Хорошо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz($arg1)
        // PHP-код
    ?>
                  
    	        
    Плохо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz ($arg1)
        // PHP-код
    ?>
                  
                
  3. Открывающая скобка.
    Открывающую фигурную скобку ставьте на отдельной строке.
  4. Хорошо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz($arg1)
        {
        // PHP-код
    ?>
                  
                
    Плохо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz ($arg1) {
        // PHP-код
    ?>
                  
                
  5. Закрывающая скобка.
    Закрывающую фигурную скобку ставьте на следующей за телом метода строке.
  6. Хорошо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz($arg1)
        {
          echo 'Adiós';
        }
        // PHP-код
    ?>
                  
                
    Плохо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz ($arg1)
        {
          echo 'Adiós'; }
        // PHP-код
    ?>
                  
                
  7. Пробелы в определении метода.
    Не должно быть пробелов после открывающей и перед закрывающей круглыми скобками в определении метода.
  8. Хорошо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz($arg1)
        // PHP-код
    ?>
                  
                
    Плохо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz( $arg1 )
        // PHP-код
    ?>
                  
                
  9. Пробелы в списке аргументов.
    В списке аргументов перед запятыми не должно быть пробелов, после каждой запятой – один пробел.
  10. Хорошо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz($arg1, $arg2, $arg3)
        // PHP-код
    ?>
                  
    	        
    Плохо
                  
                    <?php
    
        // PHP-код
        public function fooBarBaz ($arg1 ,  $arg2 ,  $arg3)
        // PHP-код
    ?>
                  
                
  11. Аргументы на нескольких строках.
    Список аргументов можно разделять на несколько строк, каждая из которых дополнена слева одним отступом (четырьмя пробелами). В таком случае первый элемент списка аргументов нужно располагать с новой строки, и в каждой строке указывайте только один аргумент. При этом закрывающая круглая скобка и открывающая фигурная скобка должны располагаться вместе на своей отдельной строке, а между ними должен быть один пробел.
  12. Хорошо
                  
                    <?php
    
        // PHP-код
        public function aVeryLongMethodName(
            $arg1,
            $arg2,
            $arg3
        ) {
            // тело метода
        }
        // PHP-код
    ?>
                  
                
    Плохо
                  
                    <?php
    
        // PHP-код
        public function aVeryLongMethodName(
          $arg1,
          $arg2,
          $arg3)
        {
            // тело метода
        }
        // PHP-код
    ?>
                  
                

5. Вызовы методов и функций

  1. Пробелы.
    В коде вызова функций и методов не ставьте пробел:
    1. между именем функции или метода и открывающей круглой скобкой;
    2. после открывающей круглой скобки;
    3. перед закрывающей круглой скобкой.
    Хорошо
                      
                      <?php
    
        bar();
        $foo->bar($arg1);
        Foo::bar($arg2, $arg3);
    ?>
                      
                    
    Плохо
                      
                      <?php
    
        bar ();
        $foo->bar 	( $arg1 );
        Foo::bar  (  $arg2, $arg3);
    ?>
                  	  
                    
  2. Запятые.
    В списке аргументов перед запятыми не должно быть пробелов, после каждой запятой – один пробел.
  3. Хорошо
                      
                      <?php
    
        Foo::bar($arg1, $arg2, $arg3);
    
    ?>
                      
                    
    Плохо
                      
                      <?php
    
        Foo::bar($arg1  ,$arg2,$arg3);
    
    ?>
                  	  
                  	
  4. Аргументы.
    Список аргументов можно разделять на несколько строк, каждая из которых дополняется слева одним отступом (четырьмя пробелами). В таком случае первый элемент списка аргументов должен начинаться с новой строки, и в каждой строке должен быть указан только один аргумент.
  5. Хорошо
                      
                      <?php
    
        $foo->bar(
            $longArgument,
            $longerArgument,
            $muchLongerArgument
        );
    
    ?>
                      
                    
    Плохо
                      
                      <?php
    
        $foo->bar(
          $longArgument,
          $longerArgument,
          $muchLongerArgument);
    
    ?>
                      
                    

6. Конструкции switch и case

Конструкция switch должна выглядеть следующим образом. Выражение case смещено на один отступ (четыре пробела) от switch, а ключевое слово break (или иное слово, обозначающее выход из конструкции) располагается на том же уровне отступов, что и тело case. Если в непустом теле case умышленно не используется break, допишите комментарий в стиле // no break.

Хорошо
            
            <?php
    switch ($expr) {
        case 0:
            echo 'First case, with a break';
            break;
        case 1:
            echo 'Second case, which falls through';
            // no break
        case 2:
        case 3:
        case 4:
            echo 'Third case, return instead of break';
            return;
        default:
            echo 'Default case';
            break;
    }
?>
			
		  
Плохо
            
            <?php
    switch ($expr) {
    case 0:
      echo 'First case, with a break';
      break;
    case 1:
      echo 'Second case, which falls through';
    case 2:
    case 3:
    case 4:
      echo 'Third case, return instead of break';
      return;
    default:
      echo 'Default case';
      break;
    }
?>
			
		  

7. Конструкции while и do while

Конструкцию while следует оформлять следующим образом. Между while и ( ставится пробел. После ( и до ) пробелов не должно быть. ) и { разделяются пробелом. Тело конструкции отделяется одним отступом (четыре пробела). } пишется на новой строке после тела конструкции.

Хорошо
            
            <?php
    while ($expr) {
        // тело конструкции
    }
?>
            
          
Плохо
            
            <?php
    while($expr){
    // тело конструкции
    }
?>
            
          

Конструкция do while должна выглядеть так:

Хорошо
            
            <?php
    do {
        // тело конструкции
    } while ($expr);
?>
    		
          
Плохо
            
            <?php
    do{
    // тело конструкции
    }while($expr);
?>
            
          

8. Конструкция for

Пример оформления конструкции for представлен ниже. Между for и ( ставится пробел. После ; ставится пробел. ) и { разделяются пробелом. Тело конструкции отделяется одним отступом (четыре пробела). } пишется на новой строке после тела конструкции.

Хорошо
            
            <?php
    for ($i = 0; $i < 10; $i++) {
        // тело for
    }
?>
            
          
Плохо
            
            <?php
    for($i=0; $i<10; $i++) {
      // тело for
    }
?>
            
          

9. Конструкция foreach

Конструкция foreach должна выглядеть следующим образом. Между foreach и ( ставится пробел. Перед и после => ставится пробел. ) и { разделяются пробелом. Тело конструкции отделяется одним отступом (четыре пробела). } пишется на новой строке после тела конструкции.

Хорошо
            
            <?php
    foreach ($iterable as $key => $value) {
        // тело foreach
    }
?>
            
          
Плохо
            
            <?php
    foreach($iterable as $key=>$value){
    // тело foreach
    }
?>
            
          

10. Конструкция try catch

Оформляйте конструкцию try catch следующим образом. Между try и { ставится пробел. } и следующий за ним catch находятся на одной строке. Между catch и ( ставится пробел. ) и { разделяются пробелом. Тело try и тело catch отделяется одним отступом (четыре пробела). } пишется на новой строке после тела конструкции.

Хорошо
            
            <?php
    try {
        // тело try
    } catch (FirstExceptionType $e) {
        // тело catch
    } catch (OtherExceptionType $e) {
        // тело catch
    }
?>
            
          
Плохо
            
            <?php
    try{
      // тело try
    } catch (FirstExceptionType $e){
      // тело catch
    } catch (OtherExceptionType $e){
      // тело catch
    }
?>