Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mayo 2005
Jordi Llonch
jordi@laigu.net
http://creativecommons.org/licenses/by-sa/2.0/
Pautas
Estructura del proyecto
Separar lgica y diseo: Plantillas
Archivos de configuracin
Idiomas
Capa abstraccin base de datos
Objectos de datos
Error handler
Documentar cdigo: phpDocumentor
Crear PDFs: HTMLDOC, FOP, ClipPDF...
XMLHttpRequest y JPSpan
"localhost");
"");
"");
"Atlas");
lib
libreras prpias (ej. capa de abstraccin a la
base de datos)
si queremos utilizar libreras no propas
podramos crear dentro de esta carpeta
otra con nombre external (ej. Smarty)
tambin 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.
notes
notas y comentarios del proyecto
templates
plantillas de cabecera, pies de pgina, hoja
de estilo... (pensando en el backoffice)
tmp
donde se crearn archivos temporales
a esta carpeta se le suelen tener que dar
permisos de escritura
Archivos de configuracin
Definiremos los parmetros que configuran nuestro proyecto con
constantes.
Todos nuestros scripts incluirn el archivo de configuracin
En la configuracin 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",
define ("DB_USER",
define ("DB_PASS",
define ("DB_NAME",
"localhost");
"");
"");
"Atlas");
Idiomas
Si queremos que nuestro proyecto soporte multidioma podemos
definir un array con las traducciones y una funcin que realice la
traduccin de conceptos:
$GLOBALS["trans"] = array(
// General
"Adreces"=>"Direcciones",
"Adult"=>"Adulto",
"Afegir"=>"Aadir",
"Afegir Document"=>"Aadir Documento",
"Afegir reserva"=>"Aadir reserva",
"Agncia"=>"Agencia",
"Agncies"=>"Agencias",
"Agrupar"=>"Agrupar"
);
lang.es.php
$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);
}
}
idioma.php
10
Objectos 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 cdigo SQL.
Mediante los mtodos a esta clase evitaremos ver cdigo SQL.
Los datos los debemos intercanviar en forma de arrays asociativos.
Con esta pauta podramos reutilizar cdigo usando JPSpan...
11
Error handler
Utilizaremos nuestra funcin de proceso de errores para:
Mejorar el monitoraje de nuestras aplicacin en produccin.
Mostrar nuestro propio mensaje de error.
Avisar al administrador del sistema en caso de errores fatales.
Disponer de un registro de errores.
12
/**
* Aadir fitxa
*
* @see uni::tractar_datos()
* @param string $tabla
* @param array $datos Datos array("col1"=>"valor1",
*
"col2"=>"valor2"...)
* @param array $conf Configuracin delayed=>true
* @return bool 1=Ok
*/
function afegir($tabla, $datos, $conf="")
{
}
13
14
XMLHttpRequest y JPSpan
XMLHttpRequest
Es un objecto nativo JavaScript que permite hacer peticiones HTTP
des de una pgina que ya ha sido cargada.
Permite hacer Microrequests en respuesta a eventos de usuario en
una pgina web, sin la necesidad de recargar la pgina.
Se pueden implementar nociones de interfcie complea de usuario
similar a aplicaciones de escritorio.
http://jpspan.sourceforge.net/wiki/doku.php?id=javascript:xmlhttprequest
JPSpan
Provee de unas herramientas para connectar PHP y JavaScript para
el intercambio de datos des de una pgina web ya cargada.
JPSpan permite definir clases en PHP y hacer llamadas remotas
desde JavaScript.
http://jpspan.sourceforge.net/wiki/doku.php
15