...
- if, elseif, while, for: deben presentar un espacio entre la palabra clave if y el paréntesis
Code Block borderStyle solid if (<condition>) while (<condition>)
- Cuando una combinación de if y else else son usadas es utilizada y si ambas deben ofrecer un valor, el else debe ser evitado.
Code Block borderStyle solid if (<condition>) return false; return true;
Note title Recomendación Le recomendamos un resultado por método / función
- Cuando un método / función dan ofrece un valor booleano y el valor actual del método / función depende de ello, la declaración if debe ser evitada
Code Block borderStyle solid public aFirstMethod() { return $this->aSecondMethod(); }
- Las pruebas deben ser agrupadas por "entidad"
Code Block borderStyle solid if ($price AND !empty($price)) [...] if (!Validate::$myObject OR $myObject->id === NULL) [...]
...
- Los nombres del método y la función comienzan siempre con un carácter en minúscula y cada una de las palabras siguientes debe deben comenzar con un carácter en mayúsculas (CamelCase)
Code Block borderStyle solid public function myExempleMethodWithALotOfWordsInItsName()
- Los corchetes que se presentan el código de método tiene que ser precedidos por un retorno
Code Block borderStyle solid public function myMethod($arg1, $arg2) { [...] }
- Los nombres de los métodos y las funciones deben ser nombres explícitos, por lo tanto nombres de función como "b()" o "ef()" están completamente prohibidos.
Info title Exceptions The only exceptions are the translation function called "l()" and debug functions "p()", "d()".
Enumeración
Las comas debe deben estar seguidas (y sólo seguidas) por un espacio.
...
- Los nombres de las definiciones deben ser escritos en mayúsculas
- Los nombres de las definiciones deber deben contar con el prefijo "PS_" dentro del núcleo y el módulo
Code Block borderStyle solid define('PS_DEBUG', 1); define('PS_MODULE_NAME_DEBUG', 1);
- Los nombres de las definiciones no permiten caracteres alfabéticos. Excepto “_”.
...
- Dentro de las funciones y métodos, sólo la etiqueta "//" de comentario es permitida
- Después de la etiqueta "//" de comentario, un espacio “// Comment“ es necesario
Code Block borderStyle solid // My great comment
- La etiqueta "//" de comentario es permitida al final de una línea de código
Code Block $a = 17 + 23; // A comment inside my exemple function
- Funciones y métodos externos, sólo las etiquetas "/" y "/" de comentario son permitidas
Code Block borderStyle solid /* This method is required for compatibility issues */ public function foo() { // Some code explanation right here [...] }
- Comentario PHP Doc Element es necesario antes de las declaraciones de método
Code Block borderStyle solid /** * 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)
Info title Para más información Para más información acerca de la norma regla PHP Doc: vea este enlace útil
...
- La palabra clave de la matriz no debe ser seguido seguida por un espacio
Code Block borderStyle solid array(17, 23, 42);
- La indentación debe ser de la siguiente forma cuando muchos datos se encuentran dentro de una matriz:
Code Block borderStyle solid $a = array( 36 => $b, $c => 'foo', $d => array(17, 23, 42), $e => array( 0 => 'zero', 1 => $one ) );
...
- Líneas de código fuente son limitadas a 120 caracteres
- Líneas de funciones y métodos están limitados limitadas a 80 con buenas justificaciones.
...
- Está prohibido el uso de un ternario en otro ternario
- Recomendamos utilizar && y || en sus condiciones
- Por favor, no use los parámetros de referencia
SQL
Nombres de
...
tablas
- Los nombres de cuadros tablas deben comenzar con el prefijo de PrestaShop "DB_PREFIX"
Code Block borderStyle solid [...] FROM `'. _DB_PREFIX_.'customer` [...]
- Los nombres de cuadros tablas deben tener el mismo nombre que el objeto que reflejan
por ejemplo "ps_cart" - Los nombres de tablas deben permanecer en singular
por ejemplo "ps_order" - Información de idioma debe ser almacenada en un cuadro denominado una tabla denominada exactamente como uno de los objetos y con el sufijo "_lang" ej. "ps_product_lang"
...
- Las palabras clave deben ser escritas en mayúsculas.
Code Block borderStyle solid SELECT `firstname` FROM `'. _DB_PREFIX_.'customer`
- Las Comillas ("`") deben ser utilizadas alrededor de nombres de campo y cuadro tabla
Code Block borderStyle solid SELECT p.`foo`, c.`bar` FROM `'. _DB_PREFIX_.'product` p, `'. _DB_PREFIX_.'customer` c
- Los alias de cuadros tablas deben ser realizados utilizando la primera letra de cada palabra y deben estar en minúsculas
Code Block borderStyle solid SELECT p.`id_product`, pl.`name` FROM `'. _DB_PREFIX_.'product` p NATURAL JOIN `'. _DB_PREFIX_.'product_lang` pl
- Cuando ocurran conflictos entre los alias de cuadrostablas, el segundo carácter también debe ser tomado.
Code Block borderStyle solid SELECT ca.`id_product`, cu.`firstname` FROM `'.DB_PREFIX.'cart` ca, `'. _DB_PREFIX_.'customer` cu
- La indentación se debe realizar para cada cláusula
Code Block borderStyle solid $query = 'SELECT pl.`name` FROM `'.PS_DBP.'product_lang` pl WHERE pl.`id_product` = 17';
- Está prohibido realizar una combinación en la cláusula WHERE
...
Este es un breve tutorial sobre cómo instalar un validador de código en su PC y utilizarlo para validar sus archivos. El validador de código utiliza PHP CodeSniffer, el cual es un paquete de PEAR. El código estándar de PrestaShop fue creado específicamente para CodeSniffer y utiliza muchas reglas tomadas de las normas reglas existentes, agregándole reglas personalizadas con el fin de adaptarse mejor a nuestro proyecto.
Puede acceder a la norma regla del código PrestaShop utilizando SVN: http://dev.prestashop.com/svn/v1/branches/norm (debe realizar este paso antes de continuar con este tutorial)
...
- Instalar PEAR: http://pear.php.net/
- Instalar PHP CodeSniffer en PEAR: http://pear.php.net/package/PHP_CodeSniffer
- Añadir la norma regla PrestaShop que ha descargado desde SVN antes, y colocarla en la carpeta "Standards" de PHP CodeSniffer.
...