LogoLogo
Homepage
  • Documentations for PrestaShop 1.4
  • English documentation 1.4
    • Getting Started
    • Updating PrestaShop
    • User Guide
      • Training
      • Customizing your shop
      • Browsing the front-office
      • Connecting to the PrestaShop back-office
      • Adding Products and Product Categories
      • A Look inside the Catalog
      • Managing Customers
      • Managing Orders
      • Managing Payment Methods
      • Managing Shipping
      • Understanding Statistics
      • Managing Modules
      • Managing Employees
      • Understanding the Preferences
      • Exploring PrestaShop's Tools
      • PrestaShop Support
    • System Administrator Guide
    • Developer Guide
      • Developer tutorials
        • Using the REST webservice
          • Chapter 1 - Creating Access to Back Office
          • Chapter 2 - Discovery - Testing access to the web service with the browser
          • Chapter 3 - First steps - Access the Web service and list client
            • 3.1 - Access the web service
            • 3.2 - Handling errors
            • 3.3 - List clients
          • Chapter 4 - Retrieve Data - Retrieving a Client
          • Chapter 5 - Modification - Update client
          • Chapter 6 - Creation - Remote Online Form
          • Chapter 7 - Removal - Remove customer accounts from the database
          • Chapter 8 - Advanced Use
          • Cheat-sheet - Concepts outlined in this tutorial
        • Understanding and using hooks
        • Synchronization via Hooks
        • Modules, Classes and Controller Override
        • Modules, Override, Web Service
        • Db class good practices for Prestashop 1.4
        • Carrier modules - functions, creation and configuration
        • Creating your own payment module
        • Accelerated Security Course - Episode 1 - Never Trust Foreign Data
        • Accelerated Security Course - Episode 2 - SQL Injections
        • Accelerated Security Course - Episode 3 - XSS
        • Accelerated Security Course - Episode 4 - CSRF
      • Fundamentals
      • Creating a PrestaShop module
      • Development standard
      • Public and overloadable methods
      • Web-service reference
      • How to use the forge to contribute to PrestaShop
      • Rocky's guides
        • PrestaShop 1.4.3 Development Guide
          • Architecture
          • Overriding Files
          • Creating Modules
          • Cookie Structure
          • Database Structure
        • PrestaShop 1.4.3 Performance Guide
    • Designer Guide
      • Coding a theme
      • Design tips
      • Implementing layered navigation in a theme
    • Troubleshooting
    • FAQ
    • User contributions
    • Documentation PDFs
  • Documentation française 1.4
    • Guide de démarrage
    • Mettre à jour PrestaShop
    • Guide de l'utilisateur
      • Formation
      • Personnaliser votre boutique
      • Se connecter au back-office de Prestashop
      • Ajouter des produits et des catégories de produits
      • Un aperçu du catalogue
      • Gérer les clients
      • Gérer les commandes
      • Gérer les méthodes de paiement
      • Gérer le transport
      • Comprendre les statistiques
      • Gérer les modules
      • Gérer les employés
      • Comprendre les préférences
      • Explorer les outils de PrestaShop
      • Obtenir de l'aide
    • Guide de l'administrateur système
    • Guide du développeur
      • Fondamentaux
      • Créer un module PrestaShop
      • Tutoriels pour développeurs
        • Tutoriel Webservice REST
          • Chapitre 1 - Mise en place - Création des accès dans le Back Office
          • Chapitre 2 - Découverte - Tester l'accès au service web avec le navigateur
          • Chapitre 3 - Premiers pas - Accéder au service web et lister les clients
            • 3.1 Accéder au service web
            • 3.2 Gestion des erreurs
            • 3.3 Lister les clients
          • Chapitre 4 - Récuperer des données : Récupérer un client
          • Chapitre 5 - Modification : Mettre à jour un client
          • Chapitre 6 - Création : Formulaire d'ajout à distance
          • Chapitre 7 - Suppression : Retirer des comptes client de la base
          • Chapitre 8 – Utilisation avancée
          • Chapitre 9 - Gestion des images
          • Chapitre 10 - Gestion des prix
          • Mémento : Notions énoncées dans ce tutoriel
        • Mieux comprendre et utiliser les hooks
        • La synchronisation via les Hooks
        • Surcharge et override
        • Modules, surcharge, web service
        • Les bonnes pratiques de la classe Db sur Prestashop 1.4
        • Les modules transporteurs - fonctionnement, création, configuration
        • Cours de sécurité accéléré no. 1 - Never trust foreign data
        • Cours de sécurité accéléré no. 2 - Injections SQL
        • Cours de sécurité accéléré no. 3 - XSS
        • Cours de Sécurité accéléré no. 4 - CSRF
    • Guide du designer
      • Conseils en design
      • Créer un thème
    • Guide du Vendeur
    • Import Wiki FR
      • Dépannage
        • Changer la taille maximum de téléchargement de fichiers
        • Comment ajouter une page à PrestaShop
        • Générer le fichier .htaccess par Prestashop pour avoir des URLs simplifiées
        • Générer un nouveau mot de passe manuellement
        • Import CSV
        • Personnalisation des mails clients
        • Problème d'allocation mémoire chez 1&1
        • Problème pour se connecter après avoir effacé une langue
        • Votre site ne répond plus, une page blanche s’affiche
      • Fidéliser les Clients
      • Gestion des Taxes
      • Installer Un Module
      • Sauvegarder votre Base de Données
    • PDF de la documentation
    • Contributions des utilisateurs
    • Questions fréquentes
  • Documentación española 1.4
    • Introducción
    • Actualización de PrestaShop
    • Guía de Usuario
      • Entrenamiento
      • Personalización de su tienda
      • Exploración del front-office
      • Conexión al back-office PrestaShop
      • Añadir Productos y Categorías de Productos
      • Una Mirada Dentro del Catálogo
      • Gestión de Clientes
      • Gestión de Pedidos
      • Gestión de Métodos de Pago
      • Gestión de Envío
      • Comprensión de las Estadísticas
      • Gestión de Módulos
      • Gestión de Empleados
      • Comprensión de Preferencias
      • Exploración de las herramientas de PrestaShop
      • Soporte PrestaShop
    • Guía del Administrador del Sistema
    • Guía del Desarrollador
      • Aspectos Fundamentales
      • Creación de un módulo de PrestaShop
      • Estándares de desarrollo
      • Manuales de desarrollador
        • Utilización del servicio web REST
          • Capítulo 1 - Creación de Acceso al Back Office
          • Capítulo 2 - Descubrimiento - Pruebas de acceso al servicio web con el navegador
          • Capítulo 3 - Primeros pasos - Acceso al servicio Web y lista de clientes
            • 3.1 - Acceso al servicio web
            • 3.2 - Manejo de errores
            • 3.3 - Enumeración de clientes
          • Capítulo 4 - Recuperación de datos - Recuperación de un cliente
          • Capítulo 5 - Modificación - Actualización de cliente
          • Capítulo 6 - Creación - Formulario En Línea Remoto
          • Capítulo 7 - Eliminación - Eliminar cuentas de clientes de la base de datos
          • Capítulo 8 - Uso avanzado
        • Comprensión y uso de hooks
        • Sincronización a través de Hooks
        • Módulos, Reemplazo, Servicio Web
        • Módulos, Clases y Reemplazo del Controlador
        • Buenas prácticas de Clase DB para Prestashop 1.4
        • Módulos de transportistas - funciones, creación y configuración
        • Curso Acelerado de Seguridad - Episodio 1 - Nunca Confíe en Datos Exteriores
        • Curso Acelerado de Seguridad - Episodio 2 - Inyecciones SQL
        • Curso Acelerado de Seguridad - Episodio 3 - XSS
        • Curso Acelerado de Seguridad - Episodio 4 - CSRF
      • Referencia del servicio web
    • Guía de Diseñador
      • Codificación de un tema
      • Consejos de Diseño
    • Solución de problemas
    • Preguntas Frecuentes
Powered by GitBook
On this page
  • Estándares de desarrollo PrestaShop
  • Resumen
  • PHP
  • SQL
  • Instalación del validador de código

Was this helpful?

  1. Documentación española 1.4
  2. Guía del Desarrollador

Estándares de desarrollo

PreviousCreación de un módulo de PrestaShopNextManuales de desarrollador

Last updated 4 years ago

Was this helpful?

Tabla de contenidos

/*<![CDATA[*/ div.rbtoc1597397863216 {padding: 0px;} div.rbtoc1597397863216 ul {list-style: disc;margin-left: 0px;} div.rbtoc1597397863216 li {margin-left: 0px;padding-left: 0px;} /*]]>*/

Estándares de desarrollo PrestaShop

Resumen

PHP

Nombres de variables

  1. Correspondiente a la información de las bases de datos: $my_var

  2. Correspondiente al algoritmo: $my_var

  3. La visibilidad de una variable miembro no afecta su nombre: private $my_var

Asignaciones

  1. Debe haber un espacio entre la variable y los operadores:

    $my_var = 17;
    $a = $b;

Operadores

  1. "+", "-", "*", "/", "=" y cualquier combinación de ellos (ej. "/=") necesitan un espacio entre miembros de la izquierda y la derecha

    $a + 17;
    $result = $b / 2;
    $i += 34;
  2. "." no llevan espacio entre los miembros de la izquierda y la derecha

    echo $a.$b;
    $c = $d.$this->foo();

    Recomendación

    Por motivos de rendimiento, no exceda el uso de la concatenación.

  3. ".=" necesita un espacio entre los miembros de la izquierda y la derecha

    $a .= 'Debug';

Declaraciones

  1. if, elseif, while, for:deben presentar un espacio entre la palabra clave if y el paréntesis

    if (<condition>)
    while (<condition>)
  2. Cuando una combinación de if y else else es utilizada y si ambas deben ofrecer un valor, el else debe ser evitado.

    if (<condition>)
    	return false;
    return true;

    Recomendación

    Le recomendamos un resultado por método / función

  3. Cuando un método / función ofrece un valor booleano y el valor actual del método / función depende de ello, la declaración if debe ser evitada

    public aFirstMethod()
    {
    	return $this->aSecondMethod();
    }
  4. Las pruebas deben ser agrupadas por "entidad"

    if ($price AND !empty($price))
    	[...]
    if (!Validate::$myObject OR $myObject->id === NULL)
    	[...]

Visibilidad

  1. La visibilidad debe definirse en cada momento, incluso cuando se trata de un método público.

  2. El orden de las propiedades del método debe ser: visibility static function name()

    private static function foo()

Nombres de Método / Función

  1. 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 deben comenzar con un carácter en mayúsculas (CamelCase)

    public function myExempleMethodWithALotOfWordsInItsName()
  2. Los corchetes que se presentan en el código del método tienen que ser precedidos por un retorno

    public function myMethod($arg1, $arg2)
    {
    	[...]
    }
  3. 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.

    Excepciones

    Las únicas excepciones son la función de traducción llamada "l()" y las funciones de depuración "p()", "d()".

Enumeración

Las comas deben estar seguidas (y sólo seguidas) por un espacio.

protected function myProtectedMethod($arg1, $arg2, $arg3 = null)

Objetos / Clases

  1. El nombre del objeto debe colocarse en singular

    class Customer
  2. El nombre de la clase debe seguir el modelo CamelCase, excepto que la primera letra sea mayúscula

    class MyBeautifulClass

Definiciones

  1. Los nombres de las definiciones deben ser ingresados en mayúsculas

  2. Los nombres de las definiciones deben contar con el prefijo "PS_" dentro del núcleo y el módulo

    define('PS_DEBUG', 1);
    define('PS_MODULE_NAME_DEBUG', 1);
  3. Los nombres de las definiciones no permiten caracteres alfabéticos. Excepto “_”.

Palabras claves

Todas las palabras clave deben colocarse en minúsculas ej. as, case, if, echo, null

Constantes

Las constantes deben estar en mayúsculas, excepto "verdadero" y "falso" y "nulo", que debe estar en minúsculas ej. "ENT_NOQUOTE", "true"

Variables de configuración

Las variables de configuración siguen las mismas reglas que las definiciones

Cadenas

Las Cadenas deben ir entre comillas simples, nunca dobles

echo 'Debug';
$myObj->name = 'Hello '.$name;

Comentarios

  1. Dentro de las funciones y métodos, sólo la etiqueta "//" de comentario es permitida

  2. Después de la etiqueta "//" de comentario, un espacio “// Comment“ es necesario

    // My great comment
  3. La etiqueta "//" de comentario es permitida al final de una línea de código

    $a = 17 + 23; // A comment inside my exemple function
  4. Funciones y métodos externos, sólo las etiquetas "/" y "/" de comentario son permitidas

    /* This method is required for compatibility issues */
    public function foo()
    {
    // Some code explanation right here
    [...]
    }
  5. Comentario PHP Doc Element es necesario antes de las declaraciones de método

    /**
     * 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)

    Para más información

Devolución de valores

  1. Las declaraciones de devolución no necesitan paréntesis, excepto cuando se trata de una expresión compuesta

    return $result;
    return ($a + $b);
    return (a() - b());
    return true;
  2. Desarmar una función

    return;

Llamada

La función de llamada precedida por una "@" está prohibida pero tenga cuidado con la llamada a la función / método con login / contraseña o ruta de argumentos.

myfunction()
// En el siguiente ejemplo colocamos una @ por motivos de seguridad 
@mysql_connect([...]);

Etiquetas

  1. Una línea en blanco debe dejarse después de la etiqueta de apertura de PHP

    <?php
    
    require_once('my_file.inc.php');
  2. La etiqueta final de PHP está prohibida

Indentación

  1. El carácter de tabulación ("\t") es el único caracter de indentación que se permite

  2. Cada nivel de indentación debe ser representado por un solo caracter de tabulación

    function foo($a)
    {
    	if ($a == null)
    		return false;
    	[...]
    }

Matriz

  1. La palabra clave de la matriz no debe ser seguida por un espacio

    array(17, 23, 42);
  2. La indentación debe ser de la siguiente forma cuando muchos datos se encuentran dentro de una matriz:

    $a = array(
    	36 => $b,
    	$c => 'foo',
    	$d => array(17, 23, 42),
    	$e => array(
    		0 => 'zero',
    		1 => $one
    	)
    );

Bloque

Los corchetes están prohibidos cuando se define solamente una instrucción o una combinación de declaración

if (!$result)
	return false;

for ($i = 0; $i < 17; $i++)
	if ($myArray[$i] == $value)
		$result[] = $myArray[$i];
	else
		$failed++;

Seguridad

  1. Toda la información de los usuarios (ingresada por ellos) debe ser moldeada.

    $data = Tools::getValue('name');
    
    $myObject->street_number = (int)Tools::getValue('street_number');
  2. Todos los parámetros de método / función deben ser ingresados cuando son recibidos (con Array u Object).

    public myMethod(Array $var1, $var2, Object $var3)
  3. Todos los demás parámetros, deben ser moldeados cada vez que se usen, pero no cuando son enviados a otros métodos / funciones

    protected myProtectedMethod($id, $text, $price)
    {
    	$this->id = (int)$id;
    	$this->price = (float)$price;
    	$this->callMethod($id, $price);
    }

Limitaciones

  1. Líneas de código fuente son limitadas a 120 caracteres

  2. Líneas de funciones y métodos están limitadas a 80 con buenas justificaciones.

Otros

  1. Está prohibido el uso de un ternario en otro ternario

  2. Recomendamos utilizar && y || en sus condiciones

  3. Por favor, no use los parámetros de referencia

SQL

Nombres de tablas

  1. Los nombres de tablas deben comenzar con el prefijo de PrestaShop "DB_PREFIX"

    [...] FROM `'. _DB_PREFIX_.'customer` [...]
  2. Los nombres de tablas deben tener el mismo nombre que el objeto que reflejan por ejemplo "ps_cart"

  3. Los nombres de tablas deben permanecer en singular por ejemplo "ps_order"

  4. Información de idioma debe ser almacenada en una tabla denominada exactamente como uno de los objetos y con el sufijo "_lang" ej. "ps_product_lang"

Consulta SQL

  1. Las palabras clave deben ser escritas en mayúsculas.

    SELECT `firstname`
    FROM `'. _DB_PREFIX_.'customer`
  2. Las comillas inversas ("`") deben ser utilizadas alrededor de nombres de campo y tabla

    SELECT p.`foo`, c.`bar`
    FROM `'. _DB_PREFIX_.'product` p, `'. _DB_PREFIX_.'customer` c
  3. Los alias de tablas deben ser realizados utilizando la primera letra de cada palabra y deben estar en minúsculas

    SELECT p.`id_product`, pl.`name`
    FROM `'. _DB_PREFIX_.'product` p
    NATURAL JOIN `'. _DB_PREFIX_.'product_lang` pl
  4. Cuando ocurran conflictos entre los alias de tablas, el segundo carácter también debe ser tomado.

    SELECT ca.`id_product`, cu.`firstname`
    FROM `'.DB_PREFIX.'cart` ca, `'. _DB_PREFIX_.'customer` cu
  5. La indentación se debe realizar para cada cláusula

    $query = 'SELECT pl.`name`
    FROM `'.PS_DBP.'product_lang` pl
    WHERE pl.`id_product` = 17';
  6. Está prohibido realizar una combinación en la cláusula WHERE

Instalación del validador de código

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 reglas existentes, agregándole reglas personalizadas con el fin de adaptarse mejor a nuestro proyecto.

Integración eclipse

Enlaces rápidos:

A continuación, tendrá que agregar el código estándar PrestaShop a las preferencias de Eclipse, para lograr esto tiene que dirijirse a "PHP Tools" y elegir el estándar PS que ha descargado anteriormente (vea el enlace arriba).

Consejo: si el archivo no es validado automáticamente, como debe ser, puede configurarlo en el menú "Preferences", "Validation". De lo contrario, haga clic derecho en la carpeta / archivo en la lista de archivos y seleccione "PHP Tools" en el menú contextual (el cual puede establecer como un acceso directo).

Línea de Comandos (Linux)

Puede instalar PHP CodeSniffer sin tener que utilizar Eclipse, utilizando la línea de comandos.

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

Utilización del programa

Para instalar el validador como un programa que puede lanzar desde la línea de comandos, siga estos pasos:

  1. Añadir la regla PrestaShop que ha descargado desde SVN antes, y colocarla en la carpeta "Standards" de PHP CodeSniffer.

Las distintas opciones para este comando están bien explicadas en su documentación. Por ahora, aquí está la manera fácil de ponerla en marcha:

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

Para mostrar sólo errores, no advertencias:

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

Si ya ha instalado manualmente PHP CodeSniffer, el programa debe estar en la carpeta "scripts" de PEAR.

Usuarios de Windows: si bien el archivo phpcs.bat debe esta localizado en la carpeta "scripts", tal vez tenga que editarlo para que funcione correctamente (reemplazar las rutas con la suya):

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 %\*

Integración del programa para la consola de Eclipse (opcional)

  1. Haga clic en el botón "External tools" en la barra de iconos (una flecha verde que apunta a una carpeta roja pequeña).

  2. Haga clic en la pestaña "External tools configuration".

  3. Haga doble clic en "Program" con el fin de crear una configuración:

    1. Ubicación: ruta de acceso al programa de phpcs (o phpcs.bat para usuarios de Windows).

    2. Argumentos: los argumentos de la línea de comandos, por ejemplo --standard=Prestashop ${selected_resource_loc}

Para más información acerca de la regla PHP Doc: vea

Puede acceder a la regla del código PrestaShop utilizando SVN: (debe realizar este paso antes de continuar con este tutorial)

Si utiliza Eclipse, puede integrar la validación de código en el editor de texto usando un plugin, .

La configuración del plugin también . En la lista de paquetes disponibles, sólo seleccione PHP CodeSniffer y PEAR si aún no cuenta con ellos.

Instalar PEAR:

Instalar PHP CodeSniffer en PEAR:

este enlace útil
http://svn.prestashop.com/branches/norm/
Guía oficial de instalación
Guía oficial de configuración
que es muy fácil de instalar
es muy simple
http://pear.php.net/
http://pear.php.net/package/PHP_CodeSniffer
Estándares de desarrollo PrestaShop
Resumen
PHP
SQL
Instalación del validador de código
#PHP
#PHP
#SQL
#Variable names
#Strings
#Table names
#Assignments
#Comments
#SQL query
#Operators
#Return values
#Statements
#Call
#Visibility
#Tags
#Method / Function names
#Indentation
#Enumeration
#Array
#Objects / Classes
#Bloc
#Defines
#Security
#Keywords
#Limitations
#Constants
#Other
#Configuration variables