Skip to content

Latest commit

 

History

History
146 lines (110 loc) · 4.6 KB

php.md

File metadata and controls

146 lines (110 loc) · 4.6 KB

PHP

  1. Отступы
  2. Управляющие структуры
  3. Вызовы функций
  4. Комментарии
  5. Соглашение по наименованию
  6. Пример

Отступы

Используйте для отступа 4 пробела, а не табуляцию.

Управляющие структуры

  • Используйте фигурные скобки в управляющих структурах даже тогда, когда это необязательно:
// Плохо
if (isset($name))
  echo "Hello $name";

// Хорошо
if (isset($name)) {
    echo "Hello $name";
}
  • В управляющих структурах между ключевым словом и открывающей круглой скобкой должен находиться пробел, чтобы отличать их от вызова функций.
// Хорошо
if ((condition1) || (condition2)) {
    action1;
} elseif ((condition3) && (condition4)) {
    action2;
} else {
    defaultaction;
}

Вызовы функций

  • Вызовы функций должны быть написаны без отступов между именем функции, открывающей скобкой и первым параметром. Отступы в виде пробела должны присутствовать после каждой запятой в перечислении параметров. Пробелов также не должно быть между последним параметром, закрывающей скобкой и точкой с запятой:
// Хорошо
$var = foo($bar, $baz, $quux);
  • Определения функций следуют такому cоглашению:
// Хорошо
function fooFunction($arg1, $arg2 = '')
{
    if (condition) {
        statement;
    }
    return $val;
}
  • Аргументы функций со значениями по умолчанию должны находиться в конце списка аргументов. Функции всегда должны возвращать значение, если это возможно в принципе. Чуть более подробный пример:
// Хорошо
function connect(&$dsn, $persistent = false)
{
    if (is_array($dsn)) {
        $dsninfo = &$dsn;
    } else {
        $dsninfo = DB::parseDSN($dsn);
    }

    if (!$dsninfo || !$dsninfo['phptype']) {
        return $this->raiseError();
    }

    return true;
}

Комментарии

Комментарии внутри кода классов должны соответствовать синтаксису комментариев PHPDoc.

Соглашение по наименованию

  • Имена констант и глобальных переменных всегда должны быть в верхнем регистре с подчеркиваниями для разделения слов. В качестве префикса в именах констант должно использоваться имя пакета/класса, в котором они используются.
$CACHE_PATH
  • Встроенные константы PHP true, false and null должны быть написаны в нижнем регистре.
true
  • Имена переменных, методов и функций должны быть в camelCase.
$specialData = getData();
  • Имена классов должны быть объявлены с использованием StudlyCaps.
namespace Vendor\Model;
 
class FooBar
{

}

Пример

namespace Vendor\Package;
 
use FooInterface;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;
 
class Foo extends Bar implements FooInterface
{
    public function sampleFunction($a, $b = null)
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }
 
    final public static function bar()
    {
        // тело метода
    }
}