Lenguaje y Normas de Desarrollo: Difference between revisions

Jump to navigation Jump to search
m
no edit summary
mNo edit summary
Line 3: Line 3:
He aquí algunas normas sobre el lenguaje, la sintaxis y las norma de desarrollo en vigor para el proyecto Dolibarr:
He aquí algunas normas sobre el lenguaje, la sintaxis y las norma de desarrollo en vigor para el proyecto Dolibarr:


== Versiones ==
= Versiones =


* Dolibarr debe funcionar con:
* Dolibarr debe funcionar con:
Line 10: Line 10:
# Mysql 3.1 ó +
# Mysql 3.1 ó +


== Normas PHP ==
= Normas PHP =


* Dolibarr está escrito en PHP y soporta todas las versiones de PHP superiores a la 4.1. Todos los archivos deben de contener la extensión .php
* Dolibarr está escrito en PHP y soporta todas las versiones de PHP superiores a la 4.1. Todos los archivos deben de contener la extensión .php
Line 61: Line 61:
A día de hoy, muy pocas funciones cumplen este standard, pero es necesario.
A día de hoy, muy pocas funciones cumplen este standard, pero es necesario.


== Normas SQL ==
= Normas SQL =


* ¡Los SELECT * están prohibidos! Cada Select deberá especificar la lista completa de los campos para recuperar. Esto permitirá evitar confusiones. Ejemplo:
* ¡Los SELECT * están prohibidos! Cada Select deberá especificar la lista completa de los campos para recuperar. Esto permitirá evitar confusiones. Ejemplo:
Line 83: Line 83:
* las funciones NOW ó SYSDATE están prohibidas en las órdenes de SQL. Si se necesita indicar la fecha del momento en un campo, el valor debe provenir de PHP y no del motor de la base de datos. Esto además de ofrecer una mejor portabilidad del código, también permite una gestión correcta de la zona horaria.
* las funciones NOW ó SYSDATE están prohibidas en las órdenes de SQL. Si se necesita indicar la fecha del momento en un campo, el valor debe provenir de PHP y no del motor de la base de datos. Esto además de ofrecer una mejor portabilidad del código, también permite una gestión correcta de la zona horaria.


== Normas HTML ==
= Normas HTML =


* Todos los atributos de las etiquetas HTML deben de estar *en minúscula* y entrecomillados con *doble comilla* (Norma xhtml)
* Todos los atributos de las etiquetas HTML deben de estar *en minúscula* y entrecomillados con *doble comilla* (Norma xhtml)
Line 105: Line 105:
* Los scripts externos son escritos en Perl si no pueden serlo en php, la utilización de otro lenguaje no está prohibido, pero debe de ser discutido priero en la lista de correo de desarrollo. El lenguaje debe de ser dominado al menos por 2 desarrolladores para asegurar el mantenimiento
* Los scripts externos son escritos en Perl si no pueden serlo en php, la utilización de otro lenguaje no está prohibido, pero debe de ser discutido priero en la lista de correo de desarrollo. El lenguaje debe de ser dominado al menos por 2 desarrolladores para asegurar el mantenimiento


== Normas Dolibarr y plantillas de código ==
= Normas Dolibarr y plantillas de código =


=== Plantillas de código ===
== Plantillas de código ==
Para estandarizar el código y acelerar el desarrollo de nuevos componentes en Dolibarr, en la carpeta '''dev/skeletons''' encontraremos 4 plantillas de código preparadas.
Para estandarizar el código y acelerar el desarrollo de nuevos componentes en Dolibarr, en la carpeta '''dev/skeletons''' encontraremos 4 plantillas de código preparadas.


Line 118: Line 118:
Tenga en cuenta que estas plantillas también son utilizadas por el generador de código PHP que se describe en el capítulo de Desarrollo de módulos Dolibarr módulo para acelerar su desarrollo.
Tenga en cuenta que estas plantillas también son utilizadas por el generador de código PHP que se describe en el capítulo de Desarrollo de módulos Dolibarr módulo para acelerar su desarrollo.


=== Las fechas y la Zona Horaria ===
== Las fechas y la Zona Horaria ==
Dolibarr es una aplicación multi-usuario y multi-ubicación. Por lo tanto, es necesario almacenar las fechas en el formato correcto. Para evitar problemas de conversión, deben aplicarse las siguientes reglas:
Dolibarr es una aplicación multi-usuario y multi-ubicación. Por lo tanto, es necesario almacenar las fechas en el formato correcto. Para evitar problemas de conversión, deben aplicarse las siguientes reglas:
* Una fecha en memoria debe de estar en formato Timestamp GMT.
* Una fecha en memoria debe de estar en formato Timestamp GMT.
Line 128: Line 128:
* Las actualizaciones automáticas de la base de datos (campo '''tms''' en la base) contienen el Timestamp GMT del momento en que se ha realizado la modificación. Los métodos select recuperan directamente este dato en memoria en formato Timestamp GMT.
* Las actualizaciones automáticas de la base de datos (campo '''tms''' en la base) contienen el Timestamp GMT del momento en que se ha realizado la modificación. Los métodos select recuperan directamente este dato en memoria en formato Timestamp GMT.


=== Codificación UTF8/ISO ===
== Codificación UTF8/ISO ==
Dolibarr guarda la información de la manera siguiente:
Dolibarr guarda la información de la manera siguiente:


Line 135: Line 135:
* las páginas web mostradas en pantalla se encuentran en formato UTF8 (con versiones < 2.5.1, es el antiguo parámetro $character_set del fichero conf.php quien define el formato de salida).
* las páginas web mostradas en pantalla se encuentran en formato UTF8 (con versiones < 2.5.1, es el antiguo parámetro $character_set del fichero conf.php quien define el formato de salida).


=== Los números reales, las cantidades y los cálculos ===
== Los números reales, las cantidades y los cálculos ==
Tanto en PHP como en otros lenguajes (Java, por ejemplo), los datos no enteros (float, real, double) no son fialbes.
Tanto en PHP como en otros lenguajes (Java, por ejemplo), los datos no enteros (float, real, double) no son fialbes.
Pruebe a realizar por ejemplo
Pruebe a realizar por ejemplo
Line 148: Line 148:
Si no es un precio que se ajuste a los parámetros de MU, MT, MS debe utilizar la función '''round()'''.
Si no es un precio que se ajuste a los parámetros de MU, MT, MS debe utilizar la función '''round()'''.


=== Creación de tablas ===
== Creación de tablas ==
No crear una tabla a utilizar, es decir, al '''primer uso''' del módulo.
No crear una tabla a utilizar, es decir, al '''primer uso''' del módulo.
Si crea un módulo que usa tablas que no se incluyen como estándar en el código de Dolibarr, asegúrese de seguir el tutorial Creación de un módulo que explica cómo incluir las tablas que se crean en la activación del módulo y no en su uso (ver más arriba).
Si crea un módulo que usa tablas que no se incluyen como estándar en el código de Dolibarr, asegúrese de seguir el tutorial Creación de un módulo que explica cómo incluir las tablas que se crean en la activación del módulo y no en su uso (ver más arriba).


=== Logs ===
== Logs ==
Añada traces dentro de su código mediante la función dolibarr_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR);
Añada traces dentro de su código mediante la función dolibarr_syslog($yourmessage, LOG_INFO|LOG_DEBUG|LOG_WARNING|LOG_ERR);


=== Carpetas de trabajo ===
== Carpetas de trabajo ==
Si tiene que crear una carpeta de trabajo, en el código, haga referencia a esta carpeta de la siguiente forma
Si tiene que crear una carpeta de trabajo, en el código, haga referencia a esta carpeta de la siguiente forma
DOL_DATA_ROOT.'/mimodulo'.
DOL_DATA_ROOT.'/mimodulo'.
Line 166: Line 166:
Si necesita una carpeta de datos temporales, esta carpeta deberá ser DOL_DATA_ROOT.'/minmodulo/temp'
Si necesita una carpeta de datos temporales, esta carpeta deberá ser DOL_DATA_ROOT.'/minmodulo/temp'


== Objeto de la programación ==
= Objeto de la programación =


=== Motivos de organización del código ===
== Motivos de organización del código ==


[[wikipedia:Martin Fowler|Martin Fowler]] ha identificado 3 métodos de organización de código llamados '''principios''':
[[wikipedia:Martin Fowler|Martin Fowler]] ha identificado 3 métodos de organización de código llamados '''principios''':
Line 182: Line 182:
Como se muestra en el código de la plantilla (ver sección anterior) Dolibarr se basa en el principio de '''Table Module'''.
Como se muestra en el código de la plantilla (ver sección anterior) Dolibarr se basa en el principio de '''Table Module'''.


=== Comunicación lógica de negociado - datos (ORM) ===
== Comunicación lógica de negociado - datos (ORM) ==


Existen 3 tipos de conexiones:
Existen 3 tipos de conexiones:

Navigation menu