Немного могли изменится с выходом PrestaShop 1.6.1
Последовательность важна, тем более, при написании open source проектов, так как множество людей их читают именно поэтому Ваш код должен быть прост и понятен другим.
Если Вы используете IDE, попробуйте phpSniffer, для того чтобы быстрее и лучше писать код.
Должны быть написаны на англ. языке, в именах переменных не должен использоваться синтаксис CamelCase, т.к. CamelCase используются для обозначения классов.
1 2 |
My_var = $ 17 ; $ = $ B; |
1 2 3 |
+ $ 17 ; Результат = $ $ б / 2 ; $ I + = 34 ; |
1 2 |
echo $a.$b; $c = $d.$this->foo(); |
1 |
$a .= 'Debug'; |
1 2 3 4 5 6 7 8 9 |
// do not use this if ($var == true) // ...nor this if ($var == false) // use this if ($var) // ...or this if (!$var) |
1 2 3 |
if (<condition>) while (<condition>) |
1 2 3 |
if (<condition>) return false; return true; |
1 2 3 4 |
public aFirstMethod() { return $this->aSecondMethod(); } |
1 2 3 4 |
if ($price AND !empty($price)) ... if (!Validate::$myObject OR $myObject->id === NULL) ... |
1 |
private static function foo() |
1 |
public function myExampleMethodWithALotOfWordsInItsName() |
1 2 3 4 |
public function myMethod($arg1, $arg2) { ... } |
Запятые должны стоять перед пробелами.
1 |
protected function myProtectedMethod($arg1, $arg2, $arg3 = null) |
1 |
class Customer |
1 |
class MyBeautifulClass |
1 2 |
define('PS_DEBUG', 1); define('PS_MODULE_NAME_DEBUG', 1); |
Все ключевые слова должны быть в нижнем регистре: as, case, if, echo, null.
Переменных следуют тем же правилам, описанными выше.
Строки должны быть в одинарных кавычках, не в двойных.
1 2 |
echo 'Debug'; $myObj->name = 'Hello '.$name; |
1 |
// My great comment |
1 |
$a = 17 + 23; // A comment inside my example function |
1 2 3 4 5 6 |
/* This method is required for compatibility issues */ public function foo() { // Some code explanation right here ... } |
1 2 3 4 5 6 7 8 9 10 11 12 |
/** * Return field value if possible (both classical and multilingual fields) * * Case 1: Return value if present in $_POST / $_GET * Case 2: Return object value * * @param object $obj Object * @param string $key Field name * @param integer $id_lang Language id (optional) * @return string */ protected function getFieldValue($obj, $key, $id_lang = NULL) |
Для получения дополнительной информации о синтаксисе PHP Doc: http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.pkg.html .
1 2 3 4 |
return $result; return ($a + $b); return (a() - b()); return true; |
1 |
return; |
прямой вызов функций запрещен ” @ “, никогда не вызываете методы и функции напрямую.
1 2 3 4 |
myfunction(); // In the following example, we put a @ for security reasons @mysql_connect(...); |
1 2 3 |
<?php require_once('my_file.inc.php'); |
1 2 3 4 5 6 |
function foo($a) { if ($a == null) return false; ... } |
1 |
array(17, 23, 42); |
1 2 3 4 5 6 7 8 9 |
$a = array( 36 => $b, $c => 'foo', $d => array(17, 23, 42), $e => array( 0 => 'zero', 1 => $one ) ); |
Круглые скобки запрещены, если они не определяют инструкцию или комбинацию.
1 2 3 4 5 6 7 8 9 10 11 |
if (!$result) return false; for ($i = 0; $i < 17; $i++) if ($myArray[$i] == $value) { $result[] = $myArray[$i]; return $result; } else $failed++; |
1 2 3 |
$data = Tools::getValue('name'); $myObject->street_number = (int)Tools::getValue('street_number'); |
getValue() не защитит ваш код от попыток взлома (SQL инъекции, XSS и нарушений CRSF). Вы должны подумать о защите самостоятельно.
Один из методов безопасности PrestaShop
pSQL($value): помогает защитить вашу базу данных от SQL инъекций.
1 |
public myMethod(Array $var1, $var2, Object $var3) |
1 2 3 4 5 6 |
protected myProtectedMethod($id, $text, $price) { $this->id = (int)$id; $this->price = (float)$price; $this->callMethod($id, $price); } |
1 |
function is_ref_to(&$a, &$b) { ... } |
1 |
... FROM `'. _DB_PREFIX_.'customer` ... |
Ключевые слова должны быть написаны в верхнем регистре.
1 2 |
SELECT `firstname` FROM `'._DB_PREFIX_.'customer` |
Поля, таблицы, имена должны экранироваться кавычками (” ` “)
1 2 |
SELECT p.`foo`, c.`bar` FROM `'._DB_PREFIX_.'product` p, `'._DB_PREFIX_.'customer` c |
Псевдонимы должны использовать первые буквы таблиц с которых они взяты.
1 2 3 |
SELECT p.`id_product`, pl.`name` FROM `'._DB_PREFIX_.'product` p NATURAL JOIN `'._DB_PREFIX_.'product_lang` pl |
Если происходит конфликт в названии таблиц (такой псевдоним уже существует) используйте 2 букву.
1 2 |
SELECT ca.`id_product`, cu.`firstname` FROM `'._DB_PREFIX_.'cart` ca, `'._DB_PREFIX_.'customer` cu |
Отступы должно быть сделаны для каждого пункта.
1 2 3 |
$query = 'SELECT pl.`name` FROM `'._DB_PREFIX_.'product_lang` pl WHERE pl.`id_product` = 17'; |
Запрещается делать JOIN в WHERE.
Это краткое руководство по установке валидатора кода на ваш компьютер и использование его. Для проверки кода PHP используется phpSniffer, который является пакетом PEAR ( http://pear.php.net/package/PHP_phpSniffer/ ). PrestaShop был создан специально для phpSniffer, используя многие правила взяты из существующих стандартов, с добавлением настраиваемые правила для того, чтобы лучше соответствовать нашему проекту.
Вы можете скачать PrestaShop с помощью SVN: https://github.com/PrestaShop/PrestaShop-norm-validator (вы должны выполнить этот шаг, прежде чем двигаться дальше в этом уроке).
Внимание!
Для того, чтобы он был признан в качестве основного стандарта , он должен быть помещен в phpSniffer / В папку по умолчанию.
Если вы используете PhpStorm ( http://www.jetbrains.com/phpstorm/ ), выполните следующие действия:
Некоторые плагины доступны в Интернете. Например, вы можете использовать этот: https://github.com/bpearson/vim-phpcs/blob/master/plugin/phpcs.vim
Положить в ~ / .vim / плагин папку.
Вы можете добавить два ярлыка (например, F9, чтобы отобразить все и Ctrl + F9, чтобы скрыть предупреждения) в вашем vimrc. файл в нормальном и режиме вставки:
1 2 3 4 5 |
nmap <C-F9>:CodeSniffErrorOnly<CR> imap <C-F9> <Esc>:CodeSniffErrorOnly<CR> nmap <F9>:CodeSniff<CR> imap <F9> <Esc>:CodeSniff<CR>a |
Командной строки (Linux)
Вы не должны использовать Eclipse, использовать phpSniffer, вы также можете установить его так, что он может быть вызван из командной строки.
Различные варианты этой команды хорошо объяснено в документации к нему. Пока, вот это самый простой способ, чтобы запустить его:
1 |
$> phpcs --standard=/path/to/norm/Prestashop /folder/or/fileToCheck |
Для того, чтобы отображать только ошибки, а не предупреждения:
1 |
$> phpcs --standard=/path/to/norm/Prestashop --warning-severity=99 /folder/or/fileToCheck |
Если вы уже установили вручную phpSniffer PHP, программа должна быть в в PEAR / скрипты папку.
Внимание!
Пользователям Windows: хотя phpcs.bat файл должен быть в этой / скрипты папку, вы, возможно, придется изменить его для того, чтобы работать должным образом (заменить пути с вашим):
1 |
path/to/php.exe -d auto_apprend_file="" -d auto_prepend_file -d include_path="path/to/PEAR/" path/to/pear/scripts/phpcs |
Перевод выполнен Saerty.
Если вы заметили ошибку, пожалуйста дайте знать.
Источник: офф сайт
Коментарии0 новых