Vous êtes sur la page 1sur 5

Barinas 16 de Junio de 2008 El presente documento tiene como finalidad establecer un conjunto de normas para la programacin de aplicaciones Web

usando PHP en la CTSI UNELLEZ. Muchas de las recomendaciones expuestas a continuacin son producto de la experiencia de los programadores y diseadores, otras son reglas de programacin y documentacin recomendadas por la comunidad desarrolladora de PEAR. Estas mejores prcticas se desean implementar a partir de cualquier nuevo proyecto en el que la coordinacin te tecnologas de informacin se vea involucrada. De ser posible, se debern adaptar progresivamente los proyectos que estn en produccin. Con relacin al diseo de las base de datos

Realizar uno o ms modelos de datos (En papel o en una herramienta CASE) antes de proceder con la creacin de la base de datos. En el se deben incluir todas las relaciones existentes. Documentar dicho(s) modelo(s) con las restricciones que deben cumplirse en cada relacin. Definir y documentar un esquema de prefijos que permita identificar los campos que son llaves forneas. Ejemplo campo clave en la tabla carreras codigo, llave fornea en la tabla carrerras_est conexCarreras. A la hora de crear la base de datos en el SGBD: Colocar una descripcin a cada tabla. Colocar una descripcin en cada campo. Utilizar tipos de datos apropiados para los campos. Crear todos los ndices que se requieran para optimizar el rendimiento de la aplicacin y proteger la integridad de los datos. En el caso de usar MYSQL crear las relaciones, restricciones y documentar las consultas utilizadas en un archivo de texto plano, para futuro uso en caso de montar un respaldo o migrar a otro servidor. Utilizar nombres intuitivos para los campos y las tablas. Si el nombre del campo requiere de dos o ms palabras, usar el Camel Caption. Por ejemplo si el atributo se llama Ciudad de Origen, deber crearse como ciudadOrigen en la base de datos, omitiendo los artculos, tal cual como esta en el ejemplo. Con relacin a los script php

Los archivos deben ser almacenados con nombres relacionados con la accin o funcin que realizan y deben ser nombrados con palabras completas o compuestas por las primeras 4 letras como mnimo de las palabras que lo identifican separados por _. Ej "crea_proceso.php", "proc_acta.php" Por ejemplo en una estructura de sistema del tipo: 1. Ingrese la cdula (existe un script que recibe la cdula y se la enva a otro script). 2. Se muestran los datos (Existe un script que muestra informacin y opciones relacionadas con dicha informacin). 3. Realizar una accin (Existe un script que es llamado por el que muestra los datos y realiza una accin ejemplo Eliminar). Los archivos del tipo 1, deben comenzar con el prefijo buscar_, seguido por el nombre del script que mostrar la informacin en el paso 2.

Los archivos del tipo 2, debern llamarse de acuerdo a la informacin que muestran . Por ejemplo datosperonales.php. Los archivos del tipo 3, debern tener un prefijo de acuerdo al tipo de accin que realizen eliminar_ o actualizar_ o insertar_ .

Mantener una estructura de directorios consistente. Por ejemplo, tener una carpeta para las imgenes, una para las libreras a ser includas, una para javascript entre otras que se consideren necesarias. Con relacin al cdigo fuente

Cada script debe llevar un comentario al comienzo indicando la fecha de creacin original y la funcin del mismo. De ser una librera de funciones o una clase, se deber documentar cada funcin o mtodo de la clase. A continuacin se muestra un ejemplo:

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** * Fecha de creacin xx / xx / xxxx * Descripcin corta del archivo * * Descripcin larga del archivo (Si existe) * * PHP versions 4 and 5 (Versiones de PHP con las que es compatible) * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category CategoryName * @package PackageName * @author Original Author <author@example.com> * @author Another Author <another@example.com> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version CVS: $Id:$ * @link http://pear.php.net/package/PackageName * @see NetOther, Net_Sample::Net_Sample() * @since File available since Release 1.2.0 * @deprecated File deprecated in Release 2.0.0 * @file Nombredearchivo * @path Ruta en la que deberia estar el archivo a partir de la carpeta raiz de la Aplicacin. * @date Fecha_de_creacion (formato dd.mm.aaaa) */ /* * Place includes, constant defines and $_GLOBAL settings here. * Make sure they have appropriate docblocks to avoid phpDocumentor * construing they are documented by the page-level docblock. */

/** * Descripcin * * Descripcin * * @category * @package * @author * @author * @copyright * @license * @version * @link * @see * @since * @deprecated */ class foo { }

corta para la clase larga para la clase (Si existe) CategoryName PackageName Original Author <author@example.com> Another Author <another@example.com> 1997-2005 The PHP Group http://www.php.net/license/3_0.txt PHP License 3.0 Release: @package_version@ http://pear.php.net/package/PackageName NetOther, Net_Sample::Net_Sample() Class available since Release 1.2.0 Class deprecated in Release 2.0.0

Utilizar nombres intuitivos y consistentes para las funciones que se encuentren en libreras de funciones o clases. Para los nombres que utilicen ms de una palabra, utilizar camelCaption, en el caso de que la funcin pertenezca a un paquete en especfico, utilizar el nombre del paquete en maysculas como prefijo para el nombre de la funcin. Ejemplo de algunas funciones
connect(), getData(), buildSomeWidget(), XML_RPC_serializeData()

Ejemplo de definicin de una funcin


function fooFunction($arg1, $arg2 = '') { if (condition) { statement; } return $val; } //Este cierre de bloque debe ir abajo

Es necesario aclarar que no deben existir espacios en blanco entre el nombre de la funcin y el parntesis que define los argumentos. Los smbolos de apertura { y cierre deben ir en una lnea aparte, en el ejemplo se muestra claramente las diferencias entre la definicin de una funcin y una estructura condicional. Las clases deben nombrarse usando la primera letra en maysculas, dependiendo de la gerarqua de las mismas se usar maysculas para definir la clase padre, las palabras que la identifican sern separadas por un _.

Utilice las siguientes etiquetas para definir segmentos de cdigo PHP <?php ?>. No se recomienda el uso de las etiquetas abreviadas debido a que algunos editores de texto no las reconocen correctamente por defecto. Al usar estructuras de control, procure seguir el siguiente ejemplo para la definicin de las

mismas.
if ((condition1) || (condition2)) { action1; } elseif ((condition3) && (condition4)) { action2; } else { defaultaction; }

Como pudo observar, el smbolo de apertura del bloque { se encuentra en la misma lnea en donde se define la condicin (A diferencia de la declaracin de funciones). Existe un espacio en blanco entre la sentencia if y el primer parntesis, igualmente existe un espacio en blanco entre el ltimo parntesis y el smbolo de apertura de bloque. Se recomienda el uso de { an cuando no sea estrictamente necesario utilizarlas ya que esto facilita la laegibilidad.

Cuando se haga el llamado a una funcin, se debe dejar un espacio en blanco entre el smbolo de igualdad y el nombre de la funcin. No debe haber espacio entre el nombre de la funcin y el parntesis abierto en donde comienzan a pasarse los parmetros. Los parmetros se separan por comas y un espacio en blanco. Ejemplo
$var = foo($bar, $baz, $quux);

Identar correctamente siempre y cuando sea posible el cdigo fuente, usando cuatro espacios en blanco en lugar del tabulador. Utilizar clases CSS en toda etiqueta HTML para la definicin de estilos. Cumplir con los requerimientos bsicos de HTML para estructurar las pginas web. Para mayor informacin al respecto, validar las pginas realizadas utilizando el validador de la w3c http://validator.w3c.org Utilizar nombres de variables intuitivos. En caso de que las variables estn compuestas por ms de una palabra, utilizar el smbolo _ para separarlas. Si se desea se puede abreviar las palabras usando las tres primeras letras de la palabra. Las variables deben estar escritas en minsculas. Ejemplo $cedula, $cedula_identidad, $ced_ide. No dejar variables sin uso regadas por todo el cdigo fuente. Usar comillas dobles solo cuando se requiera interpolar(Sustituir variables). De lo contrario usar comillas simples para la representacin e impresin de cadenas de texto. No usar consultas del tipo SELECT * FROM tabla a menos que se requieran todos los campos de la tabla. Para la obtencin de datos a partir de base de datos MYSQL. Para el caso devariables que sirvan para almacenar cadenas de texto de consulas SQL (Sin que se ejecuten con mysql_query), los nombres de variables deben antecederse del prefijo con_, seguido de un nombre intuitivo. Para el caso de variables que sean un result set, es decir que ejecuten una consulta con mysql_query, los nombres de variables deben antecederse del prefijo result_. Si la consulta se ejecuta a partir de una variable que contiene una cadena de texto, el prefijo debe seguir del nombre de la variable. De ejecutarse una consulta directamente en la funcin mysql_query, el prefijo debe ser un nombre intuitivo que describa de cierto modo lo que la consulta hace. Para el caso de arreglos que reciban un result set con la funcin mysql_fetch_array, el

prefijo para el nombre de la variable ser arr_. Para el caso de arreglos que reciban un result set con la funcin mysql_fetch_row, el prefijo para el nombre de la variable ser row_.

Ejemplos:
$con_estudiante="SELECT * FROM estudiante"; //Consulta que no se ejecuta

$result_estudiante=mysql_query("SELECT * FROM estudiante"); //Result set a partir de una consulta $result_con_estudiante=mysql_query("$con_estudiante"); una variable $arr_estudiante=mysql_fetch_array("$result_estudiante"); $row_estudiante=mysql_fetch_row("$result_estudiante");

//Result a partir de

En la declaracin de consultas SQL, no utilizar una sola lnea para la consulta ya que esto dificulta el entendimiento. Realizarla en varias lneas de ser necesario. Utilizar solo maysculas solo minsculas en las palabras reservadas SQL, esto para facilitar la lectura de las consultas. Ejemplo

SELECT COUNT(*)as total FROM inscripcion_est,inscripcion_historica WHERE inscripcion_historica.Conexion_Insc='$conexion_insc'

AND inscripcion_historica.Conexion_InscE inscripcion_est)

IN

(SELECT

Conexion_InscE

FROM