Используйте для отступа 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()
{
// тело метода
}
}