Стандарты кодирования
Стандарты кодирования Drupal основаны на PEAR Coding standards. На drupal.org существует большее количество разделов по стандартам кодирования и они могут меняться, поэтому уточняйте текущие стандарты на drupal.org.
Отступы
Отступы создаются двумя пробелами. Табуляция не используется.
Конструкции
Это правило включает использование if, for, while, switch и т.д.
Оператор должен отделять от круглой скобки один пробел — чтобы отличать операторы от функций. Мы настоятельно рекомендуем использовать фигурные скобки даже в ситуациях, когда их присутствие не является технически необходимым. Их наличие улучшает читаемость кода и уменьшает вероятность логических ошибок при добавлении новых строк.
if (condition1 || condition2) {
action1;
}
elseif (condition3 && condition4) {
action2;
}
else {
defaultaction;
}Для конструкции switch следует использовать следующую запись:
switch (condition) {
case 1:
action1;
break;
case 2:
action2;
break;
default:
defaultaction;
break;
}
Вызов функций
Пробел используется:
- Между запятой и каждым параметром.
- С каждой стороны от знака равенства.
Пробел не используется:
- Между названием функции, открывающей круглой скобкой и первым параметром.
- Между последним параметром, закрывающей круглой скобкой и точкой с запятой.
$var = foo($bar, $baz, $quux);В случае, когда используется блок связанных команд, пробелы могут использоваться для их выравнивания — это обеспечивает удобство чтения:
$short = foo($bar);
$long_variable = foo($baz);Объявление функций
Аргументы со значениями по умолчанию, должны идти в конце списка аргументов. Значение функции следует возвращать всегда, когда это возможно.
function funstuff_system($field) {
$system["description"] = t("This module inserts funny text into posts randomly.");
return $system[$field];
}Массивы
Массивы должны оформляться с использованием пробела между каждым элементом и оператором указания (=>) если он необходим:
$some_array = array('hello', 'world', 'foo' => 'bar');Отметьте: когда строка использует более 80 символов (обычный случай при кодировании форм и меню), каждый элемент следует располагать на новой строке с отступом в один уровень:
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Title'),
'#size' => 60,
'#maxlength' => 128,
'#description' => t('The title of your node.'),
);Отметьте: запятая в конце последнего элемента массива — это не опечатка! Это помогает предотвратить ошибки если другой элемент будет помещён в конец списка позже.
Комментарии
Комментирование файлов должно удовлетворять требованиям Doxygen. Дополнительную информацию о Doxygen можно найти здесь:
Отметьте: Drupal использует следующий синтаксис для блоков комментариев:
/**
* Comments.
*/Все команды Doxygen должны использовать префикс @ вместо /. Комментарии общего характера — приветствуются. Общее правило их использования: если вы смотрите на код и думаете про себя — Ого! Я даже не хочу пробовать это описать, — вам это нужно обязательно описать, пока вы не забыли как это работает.
Используйте комментирование в стиле C (/* */) или в стиле C++ (//). Комментирование в стиле Perl (#) — не приветствуется.
Подключение кода
Использование любого оператора (require_once() — безусловное, include_once() — условное) подключения файлов классов гарантирует, что файлы будут подключены только один раз. Эти операторы используют один список подключенных файлов, так что вы можете не беспокоиться о смешивании операторов подключения. Файл подключенный с помощью оператора require_once() не будет повторно подключен при использовании оператора include_once().
Отметьте: include_once() и require_once() — это операторы, не функции. Вы не должны использовать для них правила оформления функций и писать вместе с ними название файла.
Теги PHP-кода
Для определения границ PHP-кода всегда используйте именно такую запись тегов: <?php и ?> (XML-стиль). Это обязательное требование Drupal, которое позволяет использовать PHP-код в разных ОС и разных инсталляциях.
Отметьте: заключительная часть: ?>, должна быть опущена во всех кодовых файлах: .module, .inc и т.д. Закрывающая часть является необязательной и её отсутствие позволяет предотвратить учёт использования ненужных пробелов в конце файла, что может вызвать проблемы в каких-нибудь системах. Дополнительная информация доступна в документе PHP Code tags.
Заголовок блока комментария
Все кодовые файлы в Drupal должны содержать следующий блок комментария, с которого файл должен начинаться.
<?php
// $Id$Этот тег будет автоматически расширен при использовании CVS до содержания в нём полезной информации.
<?php
// $Id: CODING_STANDARDS.html,v 1.7 2005/11/06 02:03:52 webchick Exp $Примеры URLs
Используйте запись: example.com для всех примеров URLs, как рекомендуется в RFC 2606:
3. Reserved Example Second Level Domain NamesThe Internet Assigned Numbers Authority (IANA) also currently has the following second level domain names reserved which can be used as examples.
- example.com
- example.net
- example.org
Названия (правила именования)
Функции и методы
Функции и методы должны именоваться используя нижний регистр и слова должны разделяться с использованием символа подчёркивания. Дополнительно, функции должны иметь в качестве префикса название группы/модуля, чтобы предотвратить противоречия между модулями.
Название внутренних функций (предназначенных для локального использования в конкретном модуле) должны начинаться символом подчёркивания.
_node_get()
$this->_status
Константы
Константы должны всегда писаться в верхнем регистре с использованием для разделения слов символа подчёркивания. Префикс констант определяется названием модуля в котором они используются. Префикс также пишется в верхнем регистре.
Глобальные переменные
Если вам нужно определить глобальные переменные, то их названия должны начинаться символом подчёркивания, затем должно идти название связанное с названием модуля и затем опять символ подчёркивания.
Названия файлов
Все файлы документации должны использовать расширение .txt для того, чтобы сделать их просмотр в ОС Windows более лёгким. Название файла должно записываться в верхнем регистре, а расширение в нижнем. Примеры: README.txt, INSTALL.txt, TODO.txt, CHANGELOG.txt и т.д.



Комментарии
А если у меня уже есть готовый скрипт сложно ли мне из него будет модуль сделать?
А то мало информации о друпале вообще.
Где можно найти русский репозитарий?
на сайте русской поддержки ненашол и вообще там все запутано непоймеш что где, а остальные сайты которые нашол ссылаются на офф сайт
Нет, http://framework.zend.com/manual/ru/coding-standard.html
иль хошь сказать не зенда разработал язык начиная с третьей редакции?
А причем здесь Zend это же другой фраемворк?
Мне бы ссылку на русскую документацию и репозитарий.
Стоит разместить ссылку на первоисточник! drupal.org/coding-standards
Замечу, что эти стандарты меняются, особенно в части оформления тем и классов!
3 года 20 нед
Странно, что ссылку на оригинал никто не замечает, она есть на всех страницах и выделена серой полоской.
3 года 20 нед
Добавил в начало документа предупреждение об изменении.
Комментировать