domingo, 20 de enero de 2013

Diseño de proyectos.
Usualmente para el desarrollo de nuestro proyecto
nos apoyamos en un framework.
• En esta estructura la aplicación a desarrollar se
encontrará en la carpeta web.
• Estructura:
config
• archivos de configuración de nuestro
proyecto
ej:
// Paths
define ("PATH_ROOT", "/var/www/Proj/AtlasWeb-prj/");
// Url
define ("URL_HOST", "/");
define ("URL_ROOT", URL_HOST."Proj/AtlasWeb-prj/");
// Base de datos
define ("DB_HOST", "localhost");
define ("DB_USER", "");
define ("DB_PASS", "");
define ("DB_NAME", "Atlas");
Estructura:
– lang
• archivos de soporte de multidiomas
– lib
• librerías própias (ej. capa de abstracción a la
base de datos)
• si queremos utilizar librerías no propías
podríamos crear dentro de esta carpeta
otra con nombre external (ej. Smarty)
• también podemos poner aquí un error
handler propio
– menu
• en caso que se trate de un proyecto con
backoffice podemos utilizar algun sistema
que nos genere un menú.
– motor
• podríamos utilizar algún motor que nos
genere directamente HTML y algunos
scripts que nos automaticen procesos
como el de mantenimiento de datos de una
tabla (alta, baja, modificación...)
– notes
• notas y comentarios del proyecto
– templates
• plantillas de cabecera, pies de página, hoja
de estilo... (pensando en el backoffice)
– tmp
• donde se crearán archivos temporales
• a esta carpeta se le suelen tener que dar
permisos de escritura.

web
• en esta carpeta desarrollaremos toda la
lógica del nuestro proyecto
• dentro tenemos otra estructura:
– atlas: es un nombre de ejemplo,
puede ser el nombre abreviado de
nuestro proyecto
– img: imagenes que va a necesitar
nuestro proyecto
– lib: librerías no genéricas, exclusivas
para el proyecto
– login: sistema de acceso al
backoffice
– obj-data: clases de abstracción de
datos
– templates: plantillas (para Smarty)
– templates_c: compilación de las
plantillas (Smarty)

Separar lógica y diseño:
• Nunca se debe mezclar código PHP y HTML
• Código mantenible
• Un diseñador gráfico se puede ocupar del diseño
• Podemos utilizar dos técnicas:
– Librería de widgets HTML
– Plantillas (por ejemplo Smarty Engine)
Archivos de configuración
• Definiremos los parámetros que configuran nuestro proyecto con
constantes.
• Todos nuestros scripts incluirán el archivo de configuración
• En la configuración definiremos:
– Paths y URLs
– Acceso a base de datos
– El Error Handler a utilizar
// Paths
define ("PATH_ROOT", "/var/www/Proj/AtlasWeb-prj/");
// Url
define ("URL_HOST", "/");
define ("URL_ROOT", URL_HOST."Proj/AtlasWeb-prj/");
// Base de datos
define ("DB_HOST", "localhost");
define ("DB_USER", "");
define ("DB_PASS", "");
define ("DB_NAME", "Atlas");

Si queremos que nuestro proyecto soporte multidioma podemos




definir un array con las traducciones y una función que realice la
traducción de conceptos:
$lang=$_SESSION["sess_lang"];
if ($lang=="") $lang='ca';
if ($GLOBALS["trans"] == "") include(PATH_LANG.'lang.'.$lang.'.php');
if (!function_exists('tr')) {
function tr($str_from){
global $trans;
if (!is_array($trans)) return $str_from;
return strtr($str_from, $trans);
$GLOBALS["trans"] = array(
// General
"Adreces"=>"Direcciones",
"Adult"=>"Adulto",
"Afegir"=>"Añadir",
"Afegir Document"=>"Añadir Documento",
"Afegir reserva"=>"Añadir reserva",
"Agència"=>"Agencia",
"Agències"=>"Agencias",
"Agrupar"=>"Agrupar"
lang.es.php
idioma.php

Capa abstracción base de datos.
Para el acceso al motor de base de datos es mejor no utilizar
}directamente las funciones de PHP.
De esta forma podríamos migrar nuestra aplicación a otro motor más fácilmente.
Existen muchas librerías de abstracción:
}– ADODB
}– PEAR:DB
Objetos de datos.
Para el acceso a datos crearemos una clase para cada ámbito.
• De esta forma si nuestro proyecto dispone de una agenda, crearemos la clase agenda en el fichero class.agenda.php.
• Dentro de la clase de datos pondremos el código SQL.
• Mediante los métodos a esta clase evitaremos ver código SQL.
• Los datos los debemos intercanviar en forma de arrays asociativos.
• Con esta pauta podríamos reutilizar código usando JPSpan.
La fórmula más práctica de documentar un proyecto es comentar directamente el código y utilizar alguna herramienta para la creación de la documentación.
phpDocumentor: http://phpdoc.org/index.php  



equipo:
Marbely Parra Sanchez
Alma Narely Peñaloza Rios
Marlene Bello Lopez
Norma Nayeli Cervantes Maximino