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.
equipo:
Marbely Parra Sanchez
Alma Narely Peñaloza Rios
Marlene Bello Lopez
Norma Nayeli Cervantes Maximino




