Стиль кодирования
Это небольшое руководство частично основано на руководстве стиля кодирования Zend Framework.
Разграничение кода PHP
Код PHP должен всегда разграничиваться полной формой, стандартными тегами PHP:
<?php
?>
Короткие теги не допустимы. Для файлов, содержащих только код PHP, закрывающий тег должен быть всегда опущен (см. Общие стандарты).
Переменные
Переменные должны следовать венгерской нотации (https://ru.wikipedia.org/wiki/Венгерская_нотация), чтоозначает они должны начинаться с алфавита, указывающих на тип переменной, например i на целое, для массивов, o для объектов, s для строк … Кроме того, каждый первый символ слова должен быть в верхнем регистре.
$iThisIsAnInteger = 42; $sSomeText = 'This is some text'; $aVariable = array(1, 2, 3, 4 , 5);
Примечание: имена столбцов SQL должны придерживаться аналогичным обозначениям, но первый символ должен следовать символ подчеркивания. Слова разделяются символом подчеркивания, все в нижнем регистре. Если столбец является первичным ключом, ему должен предшествовать «pk_«, если этовнешний ключ на «fk_«
i_integer_variable s_some_text dt_registration_date pk_i_id // this IS a PRIMARY KEY fk_i_category_id // this IS a FOREIGN KEY
Классы
Объявление класса
Фигурная скобка должна всегда писаться в строке под именем класса.
У каждого класса должен быть блок документации, который соответствует стандарту PHPDocumentor. Ниже приведен пример приемлемого объявления класса:
/** * Documentation Block Here */ class Foo { /** * Documentation Block Here */ public function bar() { // all contents of function // must be indented four spaces } }
Управляющие операторы
Конструкция elseif, как ее имя и говорит есть сочетание if и else. Аналогично else, она расширяет оператор if для выполнения различных выражений в случае, когда условие начального оператора if эквивалентно FALSE
. Однако, в отличии от else, выполнение альтернативного выражения произойдет только тогда, когда условие оператора elseif будет являться равным TRUE
. К примеру, следующий код может выводить a больше, чем b, a равно b or a меньше, чем b:
<?php
if ($a > $b) {
echo "a больше, чем b";
} elseif ($a == $b) {
echo "a равен b";
} else {
echo "a меньше, чем b";
}
?>
Может быть несколько elseif в одном if выражении. Первое же выражение elseif (если будет хоть одно) равное TRUE
будет выполнено. В PHP вы также можете написать ‘else if’ (в два слова), и тогда поведение будет идентичным ‘elseif’ (в одно слово). Синтаксически значение немного отличается (если Вы знакомы с языком С, это тоже самое поведение), но в конечном итоге оба выражения приведут к одному и тому же результату.
Выражение elseif выполнится, если предшествующее выражение if и предшествующие выражения elseifэквивалентны FALSE
, а текущий elseif равен TRUE
.
Замечание: Заметьте, что elseif и else if будут равнозначны только при использовании фигурных скобок, как в примерах выше. Если используются двоеточие для определения условий if/elseif, Вы не должны разделять else if в два слова, иначе это вызовет фатальную ошибку в PHP.
Оператор switch
(PHP 4, PHP 5)
Оператор switch подобен серии операторов IF с одинаковым условием. Во многих случаях вам может понадобиться сравнивать одну и ту же переменную (или выражение) с множеством различных значений, и выполнять различные участки кода в зависимости от того, какое значение принимает эта переменная (или выражение). Это именно тот случай, для которого удобен оператор switch.
Замечание: Обратите внимание, что в отличие от некоторых других языков, оператор continueприменяется в конструкциях switch и действует подобно оператору break. Если у вас конструкция switch находится внутри цикла, и вам необходимо перейти к следующей итерации цикла, используйте continue 2.
Замечание:
Заметьте, что конструкция swich/case использует неточные сравнения (==).
Следующие два примера иллюстрируют два различных способа написать то же самое. Один использует серию операторов if и elseif, а другой — оператор switch:
Пример #1 Оператор switch
<?php
if ($i == 0) {
echo "i равно 0";
} elseif ($i == 1) {
echo "i равно 1";
} elseif ($i == 2) {
echo "i равно 2";
}
switch ($i) {
case 0:
echo "i равно 0";
break;
case 1:
echo "i равно 1";
break;
case 2:
echo "i равно 2";
break;
}
?>