Child pages
  • Development standard

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
maxLevel3
styledisc
printablefalse

PrestaShop evelopment standard

Summary

PHP

Variable names

  1. Corresponding to data from databases: $my_var
  2. Corresponding to algorithm: $my_var
  3. The visibility of a member variable does not affect its name: private $my_var

...

  1. It's forbidden to use a ternary into another ternary
  2. We recommend to use && and || into your conditions
  3. Please don't use reference parameters

SQL

Table names

  1. Table names must begin with the PrestaShop "DB_PREFIX" prefix
    Code Block
    borderStylesolid
    [...] FROM `'. _DB_PREFIX_.'customer` [...]
    
  2. Table names must have the same name as the object they reflect
    e.g. "ps_cart"
  3. Table names have to stay singular
    e.g. "ps_order"
  4. Language data have to be stored in a table named exactly like the object's one and with the suffix "_lang" e.g. "ps_product_lang"

...

  1. Keywords must be written in uppercase.
    Code Block
    borderStylesolid
    SELECT `firstname`
    FROM `'. _DB_PREFIX_.'customer`
    
  2. Back quotes ("`") must be used around field names and table names
    Code Block
    borderStylesolid
    SELECT p.`foo`, c.`bar`
    FROM `'. _DB_PREFIX_.'product` p, `'. _DB_PREFIX_.'customer` c
    
  3. Table aliases have to be make by taking the first letter of each word, and must be
    lowercase
    Code Block
    borderStylesolid
    SELECT p.`id_product`, pl.`name`
    FROM `'. _DB_PREFIX_.'product` p
    NATURAL JOIN `'. _DB_PREFIX_.'product_lang` pl
    
  4. When conflicts between table aliases occur, the second character has to be taken too
    Code Block
    borderStylesolid
    SELECT ca.`id_product`, cu.`firstname`
    FROM `'.DB_PREFIX.'cart` ca, `'. _DB_PREFIX_.'customer` cu
    
  5. Indentation has to be done for each clause
    Code Block
    borderStylesolid
    $query = 'SELECT pl.`name`
    FROM `'.PS_DBP.'product_lang` pl
    WHERE pl.`id_product` = 17';
    
  6. It’s forbidden to make a join in WHERE clause

Installing the code validator

Voici un bref tutoriel pour installer la moulinette de norme sur son PC et l'utiliser pour valider ses fichiers. La moulinette de norme passe par PHP CodeSniffer qui est un package de PEAR, le standard Prestashop a été créé pour l'occasion, constitué de nombreuses règles reprises des standards déjà existants, plus un certain nombre de règles personnalisées pour coller davantage au projet.

This is a brief tutorial on how to install a code validator on your PC and use it to validate your files. The code validator uses PHP CodeSniffer, which is a PEAR package. The PrestaShop code standard was created specifically for CodeSniffer, using many rules taken from existing standards, with added customized rules in order to better fit our project.

You can access the PrestaShop code standard using SVN: http://dev.prestashop.com/svn/v1/branches/norm (you must perform this step before going any further with this tutorial)

Eclipse integration

Quick links:

If you use Eclipse, you can integrate code validation within the text editor using a plugin, which is very easy to install.

The configuration of the plugin is also very simple. In the list of available packages, only choose PHP CodeSniffer and PEAR if you do not yet have them.

You will then have to add the PrestaShop code standard to the Eclipse preferences, by going to "PHP Tools" and choosing the PS standard that you downloaded earlier (see link above).

Tip: if the file does not automatically validate, as it should, you can configure this in the "Preferences" menu, "Validation" item. Otherwise, just right-click on the folder/file in the filetree, and choose "PHP Tools" in the contextual menu (which you can also set as a shortcut).

Command line (Linux)

You can install PHP CodeSniffer without having to use Eclipse, using the command line.

Code Block

apt-get install php-pear
pear install PHP_CodeSniffer
svn co http://dev.prestashop.com/svn/v1/branches/norm /usr/share/php/PHP/CodeSniffer/Standards/Prestashop
phpcs --config-set default_standard Prestashop

Using the program

In order to install the validator as a program that you can launch from the command line, follow these steps:

  1. Install PEAR: http://pear.php.net/
  2. Install PHP CodeSniffer in PEAR: http://pear.php.net/package/PHP_CodeSniffer
  3. Add the PrestaShop standard that you downloaded from SVN earlier, and place it in PHP CodeSniffer's "Standards" folder.

The various options for this command are well explained in its documentation. For now, here's the easy way to launch it:

Code Block
$> phpcs --standard=/chemin/vers/norme/Prestashop /fichier/ou/dossier/a/valider/

In order to only display errors, not warnings:

Code Block
$> phpcs --standard=/chemin/vers/norme/Prestashop --warning-severity=99 /fichier/ou/dossier/a/valider/

If you have already meanually installed PHP CodeSniffer, the program should be in PEAR's "scripts" folder.

Note

Windows users: although the phpcs.bat file should be in that "scripts" folder, you might have to edit it in order for it to work properly (replace the paths with yours):

Code Block
path/to/php.exe \-d auto_apprend_file="" \-d auto_prepend_file{color} {color:#339966}\-d include_path="path/to/PEAR/" path/to/pear/scripts/phpcs %\*

Integrating the program to Eclipse's console (optional)

  1. Click on the "External tools" button in the icon bar (a green arrow pointing at a small red folder).
  2. Click on the "External tools configuration" tab.
  3. Double-click on "Program" in order to create a configuration:
    1. Location: path to the phpcs program (or phpcs.bat for Windows users).
    2. Arguments: the arguments for the command line, for instance --standard=Prestashop ${selected_resource_loc}