Guia de Europio v1-Estable

download Guia de Europio v1-Estable

of 55

Transcript of Guia de Europio v1-Estable

Europio v 1.0Ncleo para Arquitecturas MVC Moduares en PHP 5 Orientado a Objetos

Tabla de ContenidosPresentacin de Europio v1.0.......................................................................................................6Libreras que componen el ncleo........................................................................................................6MissArchitect: Manejador de eventos para arquitecturas MVC y Despachador de URLs Amigables.....6 MissArchitect ORM: Herramienta de mapeo relacional de datos...........................................................6 DBAbstractModel: Manejador de conexiones y consultas a MySQL......................................................6 PHPAggregate: Funciones agregadas para la validacin de datos........................................................7 PHPValidator: Ayudante para PHPAggregate........................................................................................7 PHPTemplate: Mtodos de renderizacin de diccionarios dinmicos....................................................7

Acerca del Proyecto..............................................................................................................................7Contacto con el autor.............................................................................................................................. 7 Requerimientos....................................................................................................................................... 7

Europio no es un Framework................................................................................................................8

Creando una aplicacin con el ncleo Europio...........................................................................9Configuraciones Iniciales de la Aplicacin............................................................................................9Creacin de los primeros directorios...................................................................................................... 9 Configuracin del archivo __architect_config.php..................................................................................9

Documentacin Tcnica y Manual de Referencias de MissArchitect......................................11Caractersticas tnicas de MissArchitect.............................................................................................11 Funcionamiento de MissArchitect.......................................................................................................11 Configuraciones especficas requeridas por MissArchitect.................................................................12Creacin del archivo __init__.php de la aplicacin...............................................................................12 Creacin del archivo .htaccess............................................................................................................. 12 Configurando Apache para aceptar URLs Amigables..........................................................................13

Creando arquitecturas MVC modulares con MissArchitectModule.....................................................13Reglas para nombres de modelos ....................................................................................................... 15

Reglas de MissArchitect......................................................................................................................15Sobre la estructura de directorios......................................................................................................... 15

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 1Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Sobre los archivos de la aplicacin....................................................................................................... 16Archivos en el directorio de la aplicacin...........................................................................................................16 Archivos en el directorio del mdulo..................................................................................................................16 Archivos en el directorio models........................................................................................................................16 Archivos en los directorios views y controllers..............................................................................................17 Ejemplo de la estructura de archivos y directorios final ....................................................................................17

Sobre la estructura interna de los archivos........................................................................................... 18Estructura interna de controladores...................................................................................................................18 Entendiendo el funcionamiento de controladores en MissArchitect...................................................................18 Creando un controlador ....................................................................................................................................19 Crear un controlador evitando el uso de switch case........................................................................................20

Estructura interna de modelos y vistas................................................................................................. 20

Objetos de MissArchitect, mtodos y propiedades.............................................................................21La matriz global $__FU__..................................................................................................................... 21

Documentacin Tcnica y Manual de Referencias de MissArchitect ORM.............................23Creando modelos basados en MissArchitect ORM............................................................................23 Definicin de propiedades y atributos en el set_data_model()...........................................................24 Tipos de datos provistos por MissArchitect ORM...............................................................................24Ejemplo de definicin de un set_data_model().....................................................................................25 Excluir modelos del mapeo relacional del ORM...................................................................................25 Sobre la creacin de claves primarias (PRIMARY KEY) y claves forneas (FOREIGN KEY)..............26Claves Primarias (PRIMARY KEY)....................................................................................................................26 Claves Forneas (FOREIGN KEY)....................................................................................................................26

Generar consulta SQL para crear la base de datos relacional...........................................................27Cmo opera MissArchitect ORM?...................................................................................................... 27 Ejecutar el ORM y generar la consulta SQL.........................................................................................27Generar la consulta SQL en un archivo archivo................................................................................................27 Ejecutar el ORM en ambientes Windows...........................................................................................................28

Documentacin Tcnica y Manual de Referencias de DBAbstractModel ...............................29Entendiendo la Clase DBAbstractModel.............................................................................................29 Modificar HOST, USUARIO y/o CONTRASEA.................................................................................29 Creando una clase heredada de DBAbstractModel............................................................................30

Documentacin Tcnica y Manual de Referencias de PHPAggregate.....................................31Funciones incluidas.............................................................................................................................31is_email................................................................................................................................................ 31

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 2Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Sintaxis: .............................................................................................................................................................31 Parmetros: .......................................................................................................................................................31 Valores devueltos: .............................................................................................................................................31

is_password.......................................................................................................................................... 32Sintaxis: .............................................................................................................................................................32 Alias: .................................................................................................................................................................32 Parmetros: .......................................................................................................................................................32 Valores devueltos: .............................................................................................................................................32

is_secure_password............................................................................................................................. 33Sintaxis: .............................................................................................................................................................33 Parmetros: .......................................................................................................................................................33 Valores devueltos:..............................................................................................................................................33

is_ip...................................................................................................................................................... 34Sintaxis: .............................................................................................................................................................34 Parmetros: .......................................................................................................................................................34 Valores devueltos: .............................................................................................................................................34

is_alphabetic ........................................................................................................................................ 35Sintaxis: .............................................................................................................................................................35 Parmetros: .......................................................................................................................................................35 Valores devueltos: .............................................................................................................................................35

is_alphanumeric.................................................................................................................................... 36Sintxis: .............................................................................................................................................................36 Parmetros: .......................................................................................................................................................36 Valores devueltos: .............................................................................................................................................36

is_only_numbers................................................................................................................................... 37Sintaxis: .............................................................................................................................................................37 Parmetros: .......................................................................................................................................................37 Valores devueltos: .............................................................................................................................................37

is_nickname.......................................................................................................................................... 38Sintaxis: .............................................................................................................................................................38 Parmetros: .......................................................................................................................................................38 Valores devueltos: .............................................................................................................................................38

is_personal_name................................................................................................................................ 39Sintaxis: .............................................................................................................................................................39 Parmetros: .......................................................................................................................................................39 Valores devueltos: .............................................................................................................................................39

is_strlen_between................................................................................................................................. 40

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 3Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Sintaxis: .............................................................................................................................................................40 Parmetros: .......................................................................................................................................................40 Valores devueltos: .............................................................................................................................................40

is_spanish_date.................................................................................................................................... 41Sintaxis: .............................................................................................................................................................41 Parmetros: .......................................................................................................................................................41 Valores devueltos: .............................................................................................................................................41

is_usa_date.......................................................................................................................................... 42Sintaxis: .............................................................................................................................................................42 Parmetros: .......................................................................................................................................................42 Valores devueltos: .............................................................................................................................................42

is_canonical_date................................................................................................................................. 42Alias:..................................................................................................................................................................42 Sintaxis: .............................................................................................................................................................43 Parmetros: .......................................................................................................................................................43 Valores devueltos: .............................................................................................................................................43

Documentacin Tcnica y Manual de Referencias de PHPFormValidator .............................44Sintaxis:...............................................................................................................................................44 Parmetros:.........................................................................................................................................44Tipos de datos admitidos...................................................................................................................... 45

Valores devueltos:...............................................................................................................................45Error Warning: The execution was stopped!......................................................................................46No $_GET data recived......................................................................................................................................46 No $_POST data recived...................................................................................................................................46 Arguments are not sufficient in the fields options...............................................................................................46 Arguments are wrong.........................................................................................................................................46 [data_type] is an unknown data type..................................................................................................................46 [field_name] was not found in the received array data.......................................................................................47

Documentacin Tcnica y Manual de Referencias de PHPTemplate.......................................48Mtodos de la clase PHPExtendableTemplate...................................................................................48Mtodos pblicos.................................................................................................................................. 48get_content........................................................................................................................................................48 Sintaxis:........................................................................................................................................................48 Parmetros:..................................................................................................................................................48 Valores devueltos:........................................................................................................................................48 get_loop_content................................................................................................................................................49

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 4Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Identificadores de bloques HTML.................................................................................................................49 Sintaxis:........................................................................................................................................................50 Parmetros:..................................................................................................................................................50 Valores devueltos: .......................................................................................................................................51 CDIGO HTML DE EJEMPLO ...................................................................................................................51 CDIGO PHP DE EJEMPLO ......................................................................................................................52

Mtodos Protegidos.............................................................................................................................. 54get_file................................................................................................................................................................54 Sintaxis:........................................................................................................................................................54 Parmetros:..................................................................................................................................................54 Valores devueltos:........................................................................................................................................54 render_data........................................................................................................................................................54 Sintaxis:........................................................................................................................................................54 Parmetros:..................................................................................................................................................54 Valores devueltos:........................................................................................................................................55 render_loop_data...............................................................................................................................................55 Sintaxis:........................................................................................................................................................55 Parmetros:..................................................................................................................................................55 Valores devueltos:........................................................................................................................................55

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 5Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Presentacin de Europio v1.0Europio es un conjunto de Libreras PHP liberadas bajo licencia LGPL v3.0, compuestas de helpers, handlers, clases, funciones agregadas, un dispatcher de URLs y un ORM, diseadas para actuar como ncleo (core) de aplicaciones modulares desarrolladas bajo el patrn arquitectnico Modelo-Vista-Controlador y programadas en PHP 5.3+ orientado a objetos.

Libreras que componen el ncleoEuropio est compuesto una suite de herramientas y libreras, preparadas para funcionar como ncleo de una aplicacin modular. Las libreras y herramientas que lo componen son:

MissArchitect: Manejador de eventos para arquitecturas MVC y Despachador de URLs AmigablesMissArchitect es una mezcla de helpers, handlers y dispatcher de URLs, con estandarizador de estilos, diseada para guiar la arquitecturas de aplicaciones PHP modulares, cuando se trabaja bajo el patrn arquitectnico MVC. En cierta forma, MissArchitect se comporta de forma similar a un Singleton sin serlo, ya que est integrado por dos clases finales, que solo podrn instanciarse una nica vez. La finalidad de MissArchitect, es guiar las arquitecturas MVC, proveyendo un manejo absoluto de URL amigables, para controlar las vistas e invocar modelos, sumado a un manejador de peticiones de usuario que acta de forma automticamente con cada peticin, invocando al controlador correspondiente, y ahorrando al programador, la tarea de tener que manejar dichos eventos.

MissArchitect ORM: Herramienta de mapeo relacional de datosEs un ORM que se encarga de mapear relacionalmente los modelos de toda la aplicacin (mdulo por mdulo) y generar el query necesario, para la creacin ntegra de la base de datos relacional. Es la librera ms nuevo del ncleo Europio, y pretende avanzar en la provisin de mtodos CRUD para todos los mdelos. Con la ayuda de MissArchitect ORM, solo bastar con crear los modelos de la aplicacin y correr el ORM, para obtener el script de creacin de la base de datos relacional, para toda la aplicacin. MissArchitect ORM opera con el motor InnoDB permitiendo bases de datos datos relacionales robustas, a travs de referencias con claves forneas.

DBAbstractModel: Manejador de conexiones y consultas a MySQLEs una clase abstracta que permite manejar conexiones a bases de datos MySQL, proveyendo los mtodos necesarios para ejecutar consultas de cualquier tipo, con soloManual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 6Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

indicar el query. DBAbstractModel utiliza el objeto mysqli de PHP 5.

PHPAggregate: Funciones agregadas para la validacin de datosLibrera de funciones agregadas para PHP 5, destinadas a la validacin de datos por medio de expresiones regulares. Entre sus funciones agregadas, pueden encontrarse: Funciones para validacin de correo electrnico Validacin de direcciones de IP Validacin de nombres personales, etc.

PHPValidator: Ayudante para PHPAggregatees el complemento ideal para PHPAggregate ya que permite validar mltiples POST o GET datas, con las funciones agregadas de PHPAggregate, en un solo paso, con tan solo ser instanciado.

PHPTemplate: Mtodos de renderizacin de diccionarios dinmicosClase PHP que permite la renderizacin de datos, basada en diccionarios dinmicos, permitiendo una abstraccin absoluta de la lgica y el layout de las vistas, logrando una independencia absoluta de lenguajes de programacin de los de diseo. Al ser una clase pblica, puede ser heradada por la lgica de las vistas o instanciada.

Acerca del ProyectoEuropio es un proyecto de Software Libre, creado por Eugenia Bahit y distribuido con licencia LGPL v3.0. Versin actual (en desarrollo): Alfa 7.0.11 ltima versin estable (publicada): 1.0 (esta versin dej obsoletas, todas las beta anteriores) Documentacin y Descargas: https://sourceforge.net/p/europio/home/ Soporte para la versin estable: https://sourceforge.net/p/europio/soporte/

Contacto con el autor Sitio Web: www.eugeniabahit.com.ar E-mail: [email protected]

Requerimientos S.O.: Linux

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 7Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Servidor: Apache 2 Versin PHP (mnima): 5.3 Versin MySQL: 3.2

Europio no es un FrameworkLos Frameworks, muy de moda en estos ltimos tiempos, sin duda son una gran ayuda para programadores, al momento de desarrollar sitios Web o aplicaciones incluso ms complejas. Europio ha pasado por mltiples apodos que la comunidad de programadores le ha puesto, y uno de ellos, ha sido Small Framework. Hasta incluso yo misma, he llamado a MissArchitect el small framework. Pero Europio, lejos est de ser un Framework y no es la intencin convertirlo en uno. Europio est pensado y desarrollado para Arquitectos de Software avanzados y Analistas Programadores expertos, cuyos manejo del lenguaje PHP, el patrn arquitectnico MVC y la Programacin Orientada a Objetos, sea altamente fluido, siendo su nica finalidad, brindar un core bsico y elemental, comn a cualquier aplicacin modularmente evolutiva y escalable, que permita no perder el tiempo en tareas repetitivas, facilitando as, la atencin en la arquitectura propia de la aplicacin (aquella nica e irrepetible en cada software), en la creacin de modelos que definan el comportamiento y caracterstica de cada objeto, al tiempo de brindarles el apoyo necesario para centrarse nicamente en la ingeniera del sistema, dejando el diseo de interfaces, en manos de diseadores especializados. Es por todo ello, que Europio no es ms que un ncleo, comn a cualquier aplicacin, carente de elementos innecesarios en la arquitectura de un sistema, especialmente diseado para Arquitectos de Software avanzados y Analistas Programadores Expertos. Por lo tanto, Europio NO es un Framework.

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 8Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Creando una aplicacin con el ncleo EuropioConfiguraciones Iniciales de la AplicacinCreacin de los primeros directorios1. El primer paso para comenzar a crear una aplicacin guiada por MissArchitect, es crear un directorio para la aplicacin: ./aplicacion 2. Dentro de este directorio, crear la subcarpeta core: ./aplicacion/core/ 3. Dentro de ./aplicacion/core/ guardar la carpeta europio que contiene todos los archivos de la Suite: ./aplicacion/core/europio/

Configuracin del archivo __architect_config.php4. En el archivo ./aplicacion/core/europio/__architect_config.php modificar los siguientes valores como se indica en los comentarios:# Definir constantes de bases de datos const DB_HOST = 'localhost'; // host de DB const DB_NAME = 'db'; // nombre de la db const DB_USER = 'user'; // usuario de la DB const DB_PASS = 'pass'; // clave de la DB # Definir directorio de la aplicacin const APPLICATION_DIR = '/'; // directorio de la aplicacin # modulos instalados $modulos = array(); /* nombre de cada uno de los mdulos del sistema (carpetas dentro de ./aplicacion consideradas mdulos. Por ejemplo: $modulos = array('usuarios', 'tienda', 'foro', 'backend'); SE RECOMIENDA agregar cada mdulo a medida que el directo sea creado dentro de ./aplicacion */

5. En el mismo archivo, deben setearse mediante constantes, los nombres de todos los recursos (peticiones/acciones de usuario) que estarn disponibles en TODA la aplicacin. Por ejemplo, si la aplicacin permitir mostrar formularios de alta e insertar nuevos registros, se deber asignar un nombre a dichos recursos. Por ejemplo, el recurso para mostrar el formulario de alta podra llamarse alta mientras que el de insertar un nuevo registro, podra denominarse insertar. Estos nombres de recursos, sern los que en la URL se muestren como:/aplicacion/modulo/modelo/recurso/

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 9Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Tanto los nombres de las constantes de recursos, como sus valores, son libres, con la salvedad, de que el nombre de las constantes, debe comenzar con el prefijo__FU__

Siempre es recomendable utilizar nombres descriptivos. Por ejemplo:__FU__MOSTRAR_FORMULARIO_ALTA

Ejemplo de definicin de recursos:# Definir recursos de la aplicacin const __FU__FORM_ALTA = 'agregar'; const __FU__FORM_EDITAR = 'editar'; const __FU__FORM_BUSCAR = 'buscar'; const __FU__FORM_LISTAR = 'consultar'; const __FU__INSERTAR_REGISTRO = 'insertar'; const __FU__ELIMINAR_REGISTRO = 'eliminar'; const __FU__ACTUALIZAR_REGISTRO = 'actualizar';

Lo anterior, gener que MissArchitect, devuelva paths similares a los siguientes:./aplicacion/modulo/modelo/agregar/ ./aplicacion/modulo/modelo/editar/ ./aplicacion/modulo/modelo/buscar/ ./aplicacion/modulo/modelo/consultar/ ./aplicacion/modulo/modelo/insertar/ ./aplicacion/modulo/modelo/eliminar/ ./aplicacion/modulo/modelo/actualizar/

Paths similares sern devueltos para cada modelo de cada mdulo. 6. CREAR ARCHIVO DE CONFIGURACIN GENERAL: Las configuraciones propias de su aplicacin, debern agregarse libremente en el archivo ./aplicacion/core/app_config.php , el cual debe ser creado. Este archivo, ser incluido automticamente por __architec_config.php, pero no ser alterado, cuando obtenga una actualizacin de Europio.

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 10Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Documentacin Tcnica y Manual de Referencias de MissArchitectMissArchitect es una mezcla de helpers, handlers y dispatcher de URLs, con estandarizador de estilos, diseada para guiar la arquitecturas de aplicaciones PHP modulares, cuando se trabaja bajo el patrn arquitectnico MVC. En cierta forma, MissArchitect se comporta de forma similar a un Singleton sin serlo, ya que est integrado por dos clases finales, que solo podrn instanciarse una nica vez. La finalidad de MissArchitect, es guiar las arquitecturas MVC, proveyendo un manejo absoluto de URL amigables, para controlar las vistas e invocar modelos, sumado a un manejador de peticiones de usuario que acta de forma automticamente con cada peticin, invocando al controlador correspondiente, y ahorrando al programador, la tarea de tener que manejar dichos eventos.

Caractersticas tnicas de MissArchitectMissArchitect se encuentra integrado por dos clases finales, las cuales, lgicamente, no pueden ser heradadas. Tanto sus mtodos como propiedades, son privadas, por lo cual no pueden ser accedidas desde ninguna parte de la aplicacin. Ambas clases cuentan con su mtodo constructor correspondiente, motivo por el cual, solo requieren ser instanciadas para que cumplan su funcin. MissArchitect, est especialmente diseada, para manejar la arquitectura de aplicaciones modulares desarrolladas bajo el patrn arquitectnico MVC.

Funcionamiento de MissArchitectDe forma automtica, la clase final MissArchitectModule, acta el mdulo, debiendo instanciarse en cada mdulo de la aplicacin. La misma, se encarga de: Generar las URL amigables (Friendly URLs) para todas las vistas del mdulo Importar todos los modelos, las lgicas de las vistas y los controladores del mdulo Manejar las peticiones del usuario Invocar al controlador correspondiente Normalizar la arquitectura y las reglas de estilo de la aplicacin

Por otro lado, cuenta con la clase final MissArchitectApp, un helper que se encarga de retornar los paths de los mdulos instalados en la aplicacin, cuando ningn mdulo ha sido invocado por el usuario. MissArchitectApp acta a nivel de la aplicacin y puede instanciarse solo una vez.

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 11Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Configuraciones especficas requeridas por MissArchitectNo obstante las configuraciones iniciales (descriptas en Configuraciones Iniciales de la Aplicacin), de las cuales, no puede prescindirse, MissArchitect requiere de una serie de configuraciones y establece reglas prcticas. Es importante hacer notar, que dichas configuraciones y reglas prcticas, impactarn de forma directa sobre el funcionamiento de la aplicacin. Se ruega leer con detenimiento la siguiente informacin.

Creacin del archivo __init__.php de la aplicacin6. Mover el archivo ./aplicacion/core/europio/__init__.php a./aplicacion/__init__.php

7. En el __init__ de ./aplicacion, ser necesario crear el algoritmo del controlador por defecto de la aplicacin. ste, ser el encargado de manejar los eventos, cuando el usuario ingrese a la aplicacin, sin invocar ningn mdulo. Este controlador, de forma automtica, cuenta con los paths disponibles, de todos los mdulos instalados en la aplicacin. Estos paths, son accesibles mediante el array $fu el cual es pasado como parmetro, por MissArchitectApp a default_controller(). Este array, almacena los paths de los mdulos accesibles mediante la clave que los identifica. Dicha clave, mantiene el siguiente formato: FU_NOMBREDELMODULO De esta manera, si se quiere obtener el path de un mdulo llamado usuarios, se obtendr invocando la clave FU_USUARIOS: $fu['FU_USUARIOS'] La misma, retornara un path similar al siguiente: ./aplicacion/usuarios/ Dentro de la funcin default_controller($fu=array()) definir el algoritmo a ser ejecutado cuando el usuario ingrese a la aplicacin, sin haber invocado a ningn mdulo. Ejemplo:foreach($fu as $nombre_modulo=>$path) { $modulo = str_replace('FU_', '', $nombre_modulo); print Ingresar a {$modulo}
}

Creacin del archivo .htaccess1. Dentro del directorio de la aplicacin debe crearse un archivo .htaccess 2. Una vez creado el archivo, habr que indicarle que utilice el archivo __init__.php como index de la aplicacin.Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 12Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Dentro del archivo .htaccess agregar la siguiente lnea:DirectoryIndex __init__.php

De esta forma, cuando se ingrese a servidor/aplicacion/ MissArchitect har actuar al agoritmo definido anteriormente, en default_controller(). 8. A fin de poder sobreescribir URLs amigables, habr que agregar la siguiente lnea:RewriteEngine on

Configuraciones adicionales: Ntese que el mdulo mod_rewrite de Apache, debe estar habilitado en el servidor. Para habilitarlo, ejecute en una consola el siguiente comando: sudo a2enmod rewrite Luego, reinicie Apache: sudo /etc/init.d/apache2 restart Tambin ser necesario modificar el archivo default (o su correspondiente) en sites-available. Edite como super usuario el archivo: /etc/apache2/sites-available/default Busque la lnea AllowOverride None y modifquela por ( o agregue si no existe): AllowOverride All 9. Tenga en cuenta que cada vez que un nuevo mdulo sea creado, ser necesario redirigirlo hacia el archivo __init__.php del mdulo, en el .htaccessRewriteRule ^nombre-modulo nombre-modulo/__init__.php

Configurando Apache para aceptar URLs AmigablesLea el tem 3 configuraciones adicionales del ttulo anterior.

Creando arquitecturas MVC modulares con MissArchitectModule1. El primer paso para desarrollar una arquitectura MVC modular con MissArchitectModule, consiste en crear un directorio por cada mdulo que ser desarrollado. Estos directorios, llevarn el nombre del mdulo. Por ejemplo, para un mdulo de usuarios, el directorio se llamar usuarios mientras que para un panel de control de la aplicacin, podra llamarse backend. Ejemplos:./aplicacion/usuarios/ ./aplicacion/venta-pasajes/

2. Dentro de cada mdulo, es necesario crear 3 subdirectorios para las vistas,Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 13Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

modelos y controladores, llamados models, views y controllers respectivamente. Dentro de cada mdulo, crear 3 subdirectorios:controllers models views

3. Crear un archivo __init__.php para cada mdulo. El __init__ de cada mdulo, deber contener mnimamente las siguientes lneas.Lo que figura en color rojo, NO PUEDE modificarse; solo debe modificar lo que se muestra en color verde

# Importar config de la aplicacin require_once('../core/europio/__architect_config.php'); # Mdulo actual $modulo = 'nombre-del-modulo'; /* indique el nombre del mdulo (carpeta) Por ejemplo: $modulo = 'usuarios'; */ # modelos instanciables $modelos = array(); /* indicar el nombre de cada modelo en el array Por ejemplo: $modelos = array('Usuario', 'TipoUsuario', 'UsuarioDomicilio', 'UsurioTiposDocumentos', ); Lo anterior, gener URLs Amigables del tipo: /aplicacion/usuarios/tipo-usuario/agregar/ /aplicacion/usuarios/tipo-usuario/insertar/ /aplicacion/usuarios/tipo-usuario/listar/ /aplicacion/usuarios/usuario/agregar/ /aplicacion/usuarios/usuario/editar/ y as sucesivamente... */ # Iniciar Miss Architect $mvc = new MissArchitectModule($modulo, $modelos); # Crear controlador por defecto para el mdulo function default_controller($fu=array()) { // definir algoritmo del controlador por defecto foreach($fu as $name=>$url) { print "{$url}
"; } }

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 14Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Reglas para nombres de modelos Tenga en cuenta que el nombre de los modelos, deber definirlos con las siguientes caractersticas: Utilizar CamelCase Nombre de modelo en singular cuando representan entidades Ejemplos: MotivoConsulta, Usuario, SuperUsuario

Reglas de MissArchitectLas siguientes reglas, funcionan a modo de gua para la arquitectura modular MVC a la vez de contribuir a la normalizacin de reglas de estilo para la aplicacin.

Sobre la estructura de directorios Debe crearse un directorio para la aplicacin Dentro del directorio de la aplicacin, debe crearse un directorio por cada mdulo que se desarrolle en el sistema. Dicho directorio, deber llevar por nombre, el nombre del mdulo en minsculas. Solo podr contener caracteres alfanumricos y guiones medios (aunque los guiones bajos estn permitidos, no son recomendables). Si se utilizarn libreras u otros archivos de ncleo, compartidos por todos los mdulos, debern almacenarse en el directorio core. A fin de almacenar archivos estticos como imgenes, JS, CSS y HTML, crear dentro del directorio de la aplicacin, un directorio llamado site_media conteniendo 4 subdirectorios: css, js, img y html Dentro del directorio de cada mdulo, deben crearse tres carpetas: models, views y controllers Finalmente, deber observarse una estructura como la siguiente:[-] aplicacion [-] core | [-] europio | |__ __architect_config.php | |__ __architect_master.php | |__ __architect_orm.php | |__ dbabstractmodel.php | |__ phpaggregate.php | |__ phpextendabletemplate.php | |__ phpformvalidator.php |__ app_config.php [-] nombre-modulo [+] models [+] views

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 15Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

[+] controllers [-] site_media (recomendado) [+] html [+] css [+] img [+] js

Sobre los archivos de la aplicacinA fin de lograr una arquitectura homognea, se recomienda encarecidamente, seguir cuidadosamente las siguientes reglas:Archivos en el directorio de la aplicacin

Dentro de este directorio, se recomienda almacenar nicamente los siguientes archivos: __init__.php (__init__ de la aplicacin) .htaccess[-] | | | |__ |__ aplicacion [+] core [+] nombre-modulo [+] site_media (recomendado) __init__.php .htaccess

Archivos en el directorio del mdulo

Dentro de cada directorio de mdulo, deber haber un archivo __init__.php Dentro de cada carpeta models, views y controllers, deber haber un modelo, una vista y un controlador por cada clase respectivamente[-] nombre-modulo |__ __init__.php

Archivos en el directorio models

Deber haber un archivo por modelo. El nombre del archivo deber guardar las siguientes caractersticas: nombre del modelo (en singular) y en minsculas palabras separadas por guiones bajos Ejemplo: para un modelo llamado MotivoConsulta, el nombre del archivo deber ser motivo_consulta.php[-] nombre-modulo [-] models |__ nombre_modelo_uno.php

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 16Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

|__ nombre_otro_modelo.php [+] views

[+] controllersArchivos en los directorios views y controllers

Aplica lo dicho para el directorio models. En controllers, deber haber un archivo por cada controlador. Un controlador por modelo. En views, deber haber un archivo por cada vista. Una vista por modelo.

[-] nombre-modulo [-] models |__ nombre_modelo_uno.php |__ nombre_otro_modelo.php [-] views |__ nombre_modelo_uno.php |__ nombre_otro_modelo.php [-] controllers |__ nombre_modelo_uno.php |__ nombre_otro_modelo.php

Ntese que los archivos de models, views y controllers deben tener el mismo nombre.Ejemplo de la estructura de archivos y directorios final[-] | | | | | | | | | | | | | | | | | | | | | | aplicacion [-] core | [-] europio | |__ __architect_config.php | |__ __architect_master.php | |__ __architect_orm.php | |__ dbabstractmodel.php | |__ phpaggregate.php | |__ phpextendabletemplate.php | |__ phpformvalidator.php |__ app_config.php [-] nombre-modulo-uno | [-] models | |__ nombre_modelo_uno.php | |__ nombre_otro_modelo.php | [-] views | |__ nombre_modelo_uno.php | |__ nombre_otro_modelo.php | [-] controllers | |__ nombre_modelo_uno.php | |__ nombre_otro_modelo.php |__ __init__.php [-] nombre-otro-modulo

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 17Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

| | | | | | | | | | | | | | | |__ |__

| | | | | | | | | |__ [-]

[-] models |__ nombre_modelo_uno.php |__ nombre_otro_modelo.php [-] views |__ nombre_modelo_uno.php |__ nombre_otro_modelo.php [-] controllers |__ nombre_modelo_uno.php |__ nombre_otro_modelo.php __init__.php site_media (recomendado) [+] html [+] css [+] img [+] js __init__.php .htaccess

Sobre la estructura interna de los archivosEstructura interna de controladores

Debe crear un controlador principal para cada modelo. Este controlador, ser una funcin cuyo nombre conserve el siguiente esquema:nombre_del_modelo_controller($peticion)

Donde nombre_del_modelo, ser el nombre del modelo correspondiente, en minsculas, y palabras separadas por guiones bajos. Ejemplo: super_usuario_controller($peticion) Deber definir el algoritmo correspondiente, que switchee las vistas correspondientes (lea: Entendiendo el funcionamiento de controladores en MissArchitect).

Entendiendo el funcionamiento de controladores en MissArchitect

Cuando un usuario, efecta una peticin a un determinado mdulo de la aplicacin, MissArchitectModule, captura dicha peticin, la analiza y la descrimina, obteniendo el modelo y la accin a los cuales el usuario est invocando. De esa manera, cuando el usuario llama a: http://servidor/myapp/catalogo/producto/agregar/, MissArchitectModule, determina que debe invocar al controlador del modelo llamado producto, que pertenece al mdulo catalogo. Es decir que invocar a producto_controller(). A la vez, MissArchitectModule, da por sentado que producto_controller(), necesitar conocer la accin que el usuario est intentando ejecutar. Esa accin, en este caso, sera agregar. Para que el controlador del modelo, pueda decidir los cambios a

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 18Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

realizar al modelo y la vista a la cual deber pasarle informacin, MissArchitectModule, pasar el parmetro $peticion, a producto_controller(), cuyo valor, ser la accin invocada por el usuario. As, MissArchitectModule, llamar aproducto_controller('agregar');

Creando un controlador

Como

dicho antes, modelo_controller() definida.

bien

se

ha

un

controlador

debe

tener

una

funcin

Tambin mencionamos que MissArchitectModule, pasar el parmetro $peticin al controlador. Es necesario hacer notar, que los valores posibles de $peticion, son los definidos en las constantes cuyo prefijo es __FU__. De esta manera, modelo_controller($peticion) podr manejar las peticiones del usuario, efectuando un switch sobre el parmetro $peticion. Un ejemplo de ello, sera el siguiente:function producto_controller($peticion) { switch ($peticion) { case __FU__MOSTRAR_FORM_ALTA: // aqu defino que hacer si el usuario // pide agregar un producto break; case __FU__AGREGAR_NUEVO_REGISTRO: // aqu defino que hacer cuando el usuario // enva un formulario para agregar // un nuevo producto break; } }

Una buena prctica para organizar el controlador, sera tratar a producto_controller() como un handler, que se encarga de switchear las peticiones del usuario y llamar a la funcin correspondiente. Ejemplo de ello sera:function producto_controller($peticion) { switch ($peticion) { case __FU__MOSTRAR_FORM_ALTA: producto_mostrar_form_alta(); break; case __FU__AGREGAR_NUEVO_REGISTRO: producto_insertar(); break; } }

function producto_mostrar_form_alta() {

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 19Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

}

// invocar modelo (si es necesario) // modificar modelo (si es necesario) // llamar a la vista

function producto_insertar() { // recibir datos // validar datos // invocar modelo // modificar modelo // llamar a la vista }

Crear un controlador evitando el uso de switch case

Un controlador de modelo ms genrico, podra ser generado con un algoritmo de tan solo dos lneas de cdigo. Optar por esta alternativa, es una forma, adems, de forzar reglas de estilo para nombres de controladores. Para hacerlo, primero habr que definir la regla de estilo a utilizar en el nombre de las funciones. La manera ms acertada de definirlas evitando la redeclaracin de funciones, es anteponer al nombre de la funcin, el nombre del modelo, seguido por guin bajo, y finalizando con el nombre del recurso. Por ejemplo:producto_agregar() , producto_insertar(), producto_buscar(), etc.

Si se decide proceder de esta manera, solo ser necesario, en producto_controller(), armar dinmicamente el nombre de la funcin, y llamarla mediante un callback:function producto_controller($peticion) { $func_name = 'producto_'.$peticion; call_user_func($func_name); }

En

anterior, producto_agregar().

el

caso

producto_mostrar_form_alta()

ahora

debera

llamarse

Estructura interna de modelos y vistasNo existe una regla definida para la estructura interna de los modelos y las vistas guiados por MissArchitectModule. En el caso de los modelos, solo debe respetarse la regla de estilo para los nombres de modelo (volver atrs y releer Estructura interna del archivo __init__.php del mdulo).

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 20Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Objetos de MissArchitect, mtodos y propiedades MissArchitect posee dos instancias: MissArchitectApp y MissArchitectModule. La primera, puede ser instanciada nicamente el archivo __init__ de la aplicacin, mientras que la segunda, en el __init__ del mdulo. En cierta forma, MissArchitect se comporta de forma similar a un Singleton sin serlo (pues podran clonarse los objetos, sin embargo, actuarn de forma inesperada). Ninguna de las dos instancias, puede ser invocada en otro mbito que no sean los archivos mencionados. Los mtodos constructores de ambas clases, podrn provocar reacciones inesperadas si son instanciados ms de una vez. MissArchitect no tiene mtodos ni propiedades pblicas (excepto los mtodos constructores y destructores). Las clases MissArchitectApp y MissArchitectModule son finales, por lo tanto, no pueden heredarse. En todo momento puede obtenerse una matriz con todos los paths de las URL amigables del mdulo. Dicho array, est disponible a nivel global de la aplicacin, pudiendo ser accesible mediante global $__FU__.

La matriz global $__FU__ Dicha matriz, devuelve todos los paths de las URL amigables del mdulo. Las claves de la matriz, se forman de la siguiente manera: FU_MODULO_MODELO_RECURSO, donde:MODULO es el nombre del mdulo en maysculas. MODELO, el nombre de cada modelo, en maysculas y sin guiones RECURSO, el nombre de la constante que define cada recurso SIN el prefijo __FU__

La matriz global $__FU__ podr devolver un formato como el siguiente:Array ( [FU_CATALOGO_PRODUCTO_MOSTRAR_FORM_ALTA] => /myapp/catalogo/producto/agregar/ [FU_CATALOGO_AGREGAR_NUEVO_REGISTRO] => /myapp/catalogo/producto/insertar/ )

Para acceder a la matriz global $__FU__ desde cualquier parte de la aplicacin, podr procedere como en el siguiente ejemplo:

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 21Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

global $__FU__; // imprimir el path del recurso mostrar formulario de alta: print $__FU__['FU_CATALOGO_PRODUCTO_MOSTRAR_FORM_ALTA']; Ntese que una llamada como la anterior, es admisible desde una clase, mtodo, funcin o cualquier bloque if, for, foreach, switch, etc.

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 22Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Documentacin Tcnica y Manual de Referencias de MissArchitect ORMMissArchitect ORM es una herramienta de mapeo relacional de datos, sobre los modelos de cada mdulo de la aplicacin. Por el momento, tras dicho mapeo, genera genera la consulta SQL necesaria, para generar la base de datos relacional que utilizar el sistema. MissArchitect ORM opera con el motor InnoDB permitiendo bases de datos datos relacionales robustas, a travs de referencias con claves forneas. Para realizar el mapeo, provee de una interfaz que puede ser implementada en cualquir modelo de la aplicacin, obligando a generar el mtodo set_data_model(), donde se indicarn las propiedades de dicho modelo. Si bien la implementacin de esta interfaz, es opcional y solo a los fines prcticos de recordar al programador generar dicho mtodo, es altamente recomendable implementarla a fin de crear una coherencia con el resto de la aplicacin. MissArchitect ORM provee de todos los mtodos necesarios para setear el tipo de datos de las propiedades de cada modelo, requiriendo correrse por consola, para generar el SQL de creacin de la DB relacional. Como se coment al inicio, es la librera ms nueva del ncleo Europio, y pretende avanzar en la provisin de mtodos CRUD para todos los mdelos.

Creando modelos basados en MissArchitect ORM1. MissArchitect ORM provee la interface DataModel, que lo ayudar en el proceso de definicin de modelos. Dicha interface deber ser implementada por cada nuevo modelo que genere en la aplicacin. Si bien la misma, no es obligatoria, es altamente recomendable implementarla a fin de mantener coherencia arquitectnica con el resto de la aplicacin. Implemente la interface DataModel en cada nuevo modelo que genere:class MiModel implements DataModel

2. Cada modelo, deber definir el mtodo pblico set_data_model() en forma obligatoria. Dicho mtodo, recibir como parmetro, el objeto $DataModel, el cual ser entregado por MissArchitect ORM durante el mapeo de datos. Declare el mtodo publico set_data_model con el parmetro $DataModel:public function set_data_model($DataModel) {

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 23Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

}

3. Dentro de cada mtodo set_data_model, debern definirse las propiedades con sus atributos correspondientes. Para hacerlo, contine leyendo Definicin de propiedades y atributos: tipo de datos provistos por MissArchitect ORM

Definicin de propiedades y atributos en el set_data_model()El ORM de MissArchitect provee mtodos para el seteo de los diferentes tipos de datos de datos, que sern atributo de las propiedades del modelo. Los mismos, se definen en mtodo set_data_model($DataModel) como se muestra a continuacin:$DataModel->set_tipo_de_dato('nombre_propiedad', **atributos);

Los mtodospara los tipos de datos disponibles se describen en el siguiente ttulo.

Tipos de datos provistos por MissArchitect ORMEl ORM de MissArchitect permite la definicin de nueve tipos de datos diferentes para strings, nmeros, fecha y hora, as como la posibilidad de definir ndices, datos nicos y claves forneas, las cules, sern el pilar de la relacin existente entre los modelos. Los tipos de datos provistos son los siguientes:Data Type Cadenas de Texto CHAR VARCHAR TEXT|BLOB Nmeros INT DOUBLE BOOLEAN Fecha y Hora DATE TIME DATETIME ndices INDEX UNIQUE FOREIGN KEY set_index(a0*,a1*,a5*..) set_unique(a0*,a1*,a5*..) foreign_key('NombreModelo') set_date(a*, C) set_time(a*, C) set_datetime(a*, C) string notnull string notnull string notnull NULL NULL NULL set_int(a*, B, C) set_float(a*, C) set_boolean(a*, C) Int N 11 string notnull string notnull NULL NULL set_char(a*, C) set_varchar(a*, B, C) set_text(a*, C) Int N 2 255 string notnull string notnull string notnull NULL NULL NULL Mtodo Longitud de valores (B) Acepta Valor por defecto Permitir Nulo (C) Acepta Valor por defecto

(*) Nombre de la propiedad como string. Ejemplo: 'propiedad1', 'propieda2'...

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 24Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Ejemplo de definicin de un set_data_model()

Excluir modelos del mapeo relacional del ORMEs importante aclarar, que todos los modelos incluidos en la carpeta models de cada mdulo, sern mapeados relacionalmente por MissArchitect ORM, siempre y cuando stos, cuenten con el mtodo set_data_model() definido. Por lo tanto, para excluir un modelo del mapeo efectuado por el ORM, habr dos alternativas: 1) No definir el mtodo set_data_model() (recomendado) 2) Declarar el mtodo set_data_model() sin definir su algoritmo

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 25Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Sobre la creacin de claves primarias (PRIMARY KEY) y claves forneas (FOREIGN KEY)Claves Primarias (PRIMARY KEY)

Ntese que el ORM de MissArchitect, automticamente durante el mapeo relacional de los datos del modelo, generar una clave primaria nica formada por nombredelmodelo_id. Por lo tanto, no ser necesario definirla en el set_data_model() .Claves Forneas (FOREIGN KEY)

Con MissArchitect ORM, las claves forneas se definen indicando el nombre del modelo al cual hace referencia el modelo que se est definiendo. Automticamente, el ORM de MissArchitect, crear en el modelo, un campo con el mismo nombre de ID que en el modelo de referencia. Ejemplo: Nombre del modelo actual: Usuario Usuario, define una clave fornea, en relacin hacia el modelo TipoDeUsuario:class TipoDeUsuario implements DataModel { //.... public function set_data_model($DataModel) { $DataModel->set_varchar('tipo', 50, 'notnull'); } } class Usuario implements DataModel { //.... public function set_data_model($DataModel) { $DataModel->set_varchar('username', 25, 'notnull'); $DataModel->foreign_key('TipoDeUsuario'); } }

El ORM generar la siguiente consulta SQL:CREATE TABLE IF NOT EXISTS tipodeusuario ( tipodeusuario_id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, tipo VARCHAR(50) NOT NULL ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS usuario ( usuario_id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, username VARCHAR(25) NOT NULL, tipodeusuario_id INT(11) NOT NULL, FOREIGN KEY (tipodeusuario_id) REFERENCES tipodeusuario(tipodeusuario_id) ON UPDATE CASCADE ON DELETE CASCADE ) ENGINE=InnoDB;

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 26Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Generar consulta SQL para crear la base de datos relacionalCmo opera MissArchitect ORM?Cuando MissArchitect ORM es ejecutado, recorrer mdulo por mdulo, la carpeta models, trayendo todos los archivos *.php de los modelos. Instanciar cada modelo, y llamar al mtodo set_data_model($DataModel) de cada modelo, pasndole como parmetro un clon de s mismo. Comenzar creando la consulta SQL para crear cada una de las tablas. Una vez creadas, recorrer cclicamente dichas consultas, y las organizar relacionalmente. Esto significa, que el ORM, como es de esperarse, posee la capacidad de razonar por s mismo, a fin de determinar el orden el que las tablas deben ser creadas (no se puede generar una tabla con claves forneas hacia otra, que no exista en la base de datos, pues generar un error). Una vez organizadas relacionalmente, generar la consulta final. Es importante aclarar que si se excluye un modelo del mapeo (ya sea en forma exprofesa, o por olvido), y ste, es referenciado por otro modelo, el ORM caer en bucle infinito que deber ser cancelado manualmente. sto, no es difcil de prevenir para el ORM, pero an, dicha caracterstica se encuentra planificada en proceso de desarrollo. Por lo tanto, tenga en consideracin, crear todos los modelos a los que haga referencia, prestando especial cuidado a la ortografa de los mismos. De todas formas, no debe alterarse. Si el ORM se pierde en un bucle infinito, solo deber pararlo con ctrl + D y todo solucionado. En ningn momento, se correr el riesgo de romper algo en el sistema.

Ejecutar el ORM y generar la consulta SQLMissArchitect ORM solo puede ser ejecutado a travs de la lnea de comandos. Una vez creados todos los modelos, abra una terminal y navegue hasta el directorio ./aplicacion/core/europio y escriba:php -f __architect_orm.php -- create

La consulta SQL ser impresa en pantalla. Cpiela, y ejectela en MySQL.Generar la consulta SQL en un archivo archivo

Una vez creados todos los modelos, abra una terminal y navegue hasta el directorio ./aplicacion/core/europio y escriba:Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 27Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

php -f __architect_orm.php -- create > /ruta_a/archivo.sql

Ejecutar el ORM en ambientes Windows

Una vez creados todos los modelos, abra una terminal y navegue hasta el directorio ./aplicacion/core/europio y escriba:C:\PHP5\php.exe -f "C:\ruta_a\aplicacion\core\europio\__architect_orm.php" -- -create

Europio, por el momento, no cuenta con asistencia ni documentacin calificada para la ejecucin de la suite en ambientes Windows. Si necesita ayuda para ejecutar el ORM en un entorno Windows, por favor, lea la documentacin oficial de PHP al respecto en la siguiente URL: http://php.net/manual/es/install.windows.commandline.php. Lamento no poder tener las respuestas necesarias para ayudarlo. Si usted es un usuario experto en programacin y configuracin de Apache y PHP en ambientes Windows, su colaboracin voluntaria con este manual, ser ms que bienvenida.

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 28Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Documentacin Tcnica y Manual de Referencias de DBAbstractModelDBAbstractModel es una clase abstracta sencilla, que opera en forma conjunta con la clase mysqli() de PHP 5, permitiendo insertar, actualizar, eliminar y seleccionar datos de bases de datos MySQL.

Entendiendo la Clase DBAbstractModelDBAbstractModel declara cuatro mtodos abstractos: insert() , delete() , update() y select() , que deben ser re-definidos en la/s clase/s que la hereden (o comentados en la propia clase a fin de evitar errores). Esta clase abstracta pretende servir como modelo a clases cuyos objetos, requieran de mtodos donde sea necesario realizar consultas a bases de datos. No es una librera para conectarse a una base de datos desde cualquier mbito. Es una clase abstracta que no puede ser instanciada, sino que necesita ser heredada por otra clase. DBAbstractModel declara y define el algoritmo de cuatro mtodos no abstractos, de los cuales, uno de ellos permite ejecutar cualquier sentencia SQL CREATE, ALTER, DROP, INSERT, UPDATE o DELETE y otro, exclusivo para sentencias SELECT el cual retorna los registros encontrados en el array $rows. Las clases que hereden de DBAbstractModel, adems de re-definir los cuatros mtodos abstractos, podr llamar a cualquiera de los dos mtodos no abstractos (mencionados en el prrafo anterior), redifiniendo el valor de las propiedades $this->query (consulta SQL a ser ejecutada) y opcionalmente, $this->db_name (base de datos a utilizar).

Modificar HOST, USUARIO y/o CONTRASEANtese que el host, usuario y contrasea de la base de datos MySQL, se definen como constantes en el archivo ./aplicacion/core/__architect_config.php Si necesita modificar de forma dinmica, el host, usuario y contrasea de la base de datos en las clases que hereden de DBAbstractModel, deber cambiar (en DBAbstractModel) la visibilidad de las propiedades que necesite modificar, de privadas a protegidas y adems, quitarles el atributo de estticas, de modo tal que el bloque:

private static $db_host = DB_HOST; private static $db_user = DB_USER; private static $db_pass = DB_PASS;

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 29Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

se vea de la siguiente forma:protected $db_host = DB_HOST; protected $db_user = DB_USER; protected $db_pass = DB_PASS;

Creando una clase heredada de DBAbstractModelRecuerde que por defecto, usted debe re-definir los cuatro mtodos que se muestran a continuacin. Si alguno de los mtodos no fuese a utilizarlos en NINGUNA clase de las que heredan de DBAbstractModel, podr comentarlos en dbabstractmodel.php o redefinirlos sin un algoritmo. Rcuerde tambien, establecer la visibilidad de cada mtodo. Por defecto, los cuatro mtodos son declarados con visibilidad protegida.

class MiClase extends DBAbstractModel { // mtodos obligatorios. // deber comentarlos en DBAbstractModel si // no desea utilizarlos protected function insert() { $this->query = "INSERT INTO tabla (campo) VALUES (1)"; $this->execute_single_query(); } protected function delete() { $this->query = "DELETE FROM tabla WHERE campo=1"; $this->execute_single_query(); } protected function update() { $this->query = "UPDATE tabla SET campo=7 WHERE campo=1"; $this->execute_single_query(); } public function select() { $this->query = "SELECT * FROM tabla"; $this->get_results_from_query(); // retorna un array con los resultados $this->rows; } }

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 30Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Documentacin Tcnica y Manual de Referencias de PHPAggregatePhpAggregate es una librera de funciones agregadas para PHP 5, destinadas a la validacin de datos por medio de expresiones regulares.

Funciones incluidas is_email valida un e-mail is_password valida una contrasea estndar is_secure_password valida una contrasea segura is_ip valida una direccin IP is_alphabetic valida que una cadena contenga solo letras del alfabeto is_alphanumeric valida que una cadena contenga solo letras y nmeros is_only_numbers valida que una cadena contenga solo nmeros is_nickname valida un nickname (apodo, nombre de usuario) is_personal_name valida nombre y apellido completos de una persona is_strlen_between valida que una cadena contenga entre n1 y n2 caracteres is_spanish_date valida una fecha con formato espaol (da, mes, ao) is_usa_date valida una fecha con formato americano (mes, da, ao) is_canonical_date valida una fecha con formato cannico (ISO: ao, mes, da)

is_emailValida direcciones de correo electrnico tradicionales.Sintaxis:is_email($string);

Parmetros:$string Cadena a evaluar

Valores devueltos:

Devuelve TRUE si la cadena evaluada es una direccin de e-mail con formato vlido. DeManual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 31Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

lo contrario, devuelve FALSE.

$email = '[email protected]'; if(is_email($email) == true) { print $email . ' es un e-mail vlido'; } else { print $email . ' no es un e-mail vlido'; } // Imprime: // [email protected] es un e-mail vlido

is_passwordValida contraseas alfanumricas convencionales. Permite letras minsculas de la "a" a la "z"; maysculas de la "A" a la "Z" y nmeros. No acepta otros caracteres.Sintaxis:is_password($string, $int_min, $int_max);

Alias:

La funcin is_password puede ser llamada tambin, como:is_aZ9_between() is_aZ9_password()

Parmetros:$string Cadena a evaluar $int_min (opcional) Nmero caracteres que puede tener. $int_max (opcional) Nmero caracteres que puede tener. entero. Indica la cantidad mnima de El valor por defecto es 6. entero. Indica la cantidad mxima de El valor por defecto es 18.

Valores devueltos:

Devuelve TRUE si la cadena evaluada es una contrasea vlida. De lo contrario, devuelve FALSE.$passwords = array('clave 'clave 'clave 'clave 'clave ); 1'=>'aKgt67', 2'=>'holamundo', 3'=>'incorrect_pass', 4'=>'h5Tm', 5'=>'*v*765-la'

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 32Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

foreach($passwords as $clave=>$valor) { if(is_password($valor) == true) { print $clave . ' es correcta'; } else { print $clave . ' no es correcta'; } } /* Salida: clave clave clave clave clave */ 1 2 3 4 5 es es no no no correcta correcta es correcta es correcta es correcta

is_secure_passwordValida contraseas seguras que deban incluir al menos una letra mayscula (A-Z), una minscula (a-z), un nmero (0-9) y al menos 1 de los siguientes caracteres especiales: !, , #, $, %, &, /, ?, , *, +, -, _, @ Sugerencia: Para que una contrasea sea almacenada de forma segura, lo mejor es proceder a su cifrado MD5 o similar.Sintaxis:is_secure_password($string, $int_min, $int_max)

Parmetros:$string Cadena a evaluar $int_min (opcional) Nmero caracteres que puede tener. $int_max (opcional) Nmero caracteres que puede tener. entero. Indica la cantidad mnima de El valor por defecto es 8. entero. Indica la cantidad mxima de El valor por defecto es 64.

Valores devueltos:

Devuelve TRUE si la cadena evaluada es una contrasea segura vlida. De lo contrario, devuelve FALSE.$passwords = array('clave 'clave 'clave 'clave 'clave 1'=>'aKgt67', 2'=>'hola*mundo', 3'=>'Any_paSsw0rd', 4'=>'h5Tm*', 5'=>'*v*765-lA'

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 33Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

); foreach($passwords as $clave=>$valor) { if(is_secure_password($valor) == true) { print $clave . ' es una clave segura'.chr(10); } else { print $clave . ' no es una clave segura'.chr(10); } } /* Salida: clave clave clave clave clave */ 1 2 3 4 5 no no es no es es una clave segura es una clave segura una clave segura es una clave segura una clave segura

is_ipValida direcciones IP.Sintaxis:is_ip($string);

Parmetros:$string Cadena a evaluar

Valores devueltos:

Devuelve TRUE si $string es una direccin IP vida. De lo contrario, devuelve FALSE.$ip_addresses = array('IP 1'=>'20064390', 'IP 2'=>'200.64.3.90', 'IP 3'=>'0.0.1.10' ); foreach($ip_addresses as $ip=>$valor) { if(is_ip($valor) == true) { print $ip . ' es correcta'.chr(10); } else { print $ip . ' no es correcta'.chr(10); } } /*

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 34Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Salida: IP 1 no es correcta IP 2 es correcta IP 3 es correcta */

is_alphabeticValida que una cadena de texto contenga nicamente letras maysculas y minsculas entre la "a" y la "z".Sintaxis:is_alphabetic($word);

Parmetros:$word Palabra/cadena a ser evaluada

Valores devueltos:

Devuelve TRUE si la cadena contiene solo letras del abecedarios (maysculas y/o minsculas). De lo contrario, devuelve FALSE.$words = array('Palabra palabra', 'Palabra 'Palabra 'Palabra 'Palabra 'Palabra ); 1'=>'esto es una oracin pero no una 2'=>'Palabra', 3'=>'PostgreSQL', 4'=>'PHP', 5'=>'PHP4', 6'=>'PHP 5',

foreach($words as $word=>$valor) { if(is_alphabetic($valor) == true) { print $word . ' tiene solo letras'.chr(10); } else { print $word . ' no tiene solo letras'.chr(10); } } /* Salida: Palabra Palabra Palabra Palabra 1 2 3 4 no tiene solo letras tiene solo letras tiene solo letras tiene solo letras

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 35Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Palabra 5 no tiene solo letras Palabra 6 no tiene solo letras */

is_alphanumericValida que una cadena solo contenga letras maysculas y/o minsculas y/o nmeros.Sintxis:is_alphanumeric($string);

Parmetros:$string Cadena a evaluar

Valores devueltos:

Devuelve TRUE si la cadena evaluada contiene nicamente letras (maysculas y/o minsculas) y/o nmeros. De lo contrario, devuelve FALSE.$cadenas = array('Cadena 'Cadena 'Cadena 'Cadena 'Cadena ); 1'=>'abdgdt', 2'=>'aKjhP8Y', 3'=>'ahY lK7', 4'=>'JAHDG', 5'=>'Jkj_D2G'

foreach($cadenas as $cadena=>$valor) { if(is_alphanumeric($valor) == true) { print $cadena . ' es alfanumerica '; } else { print $cadena . ' no es alfanumerica '; } } /* Salida: Cadena Cadena Cadena Cadena Cadena */ 1 2 3 4 5 es es no es no alfanumerica alfanumerica es alfanumerica alfanumerica es alfanumerica

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 36Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

is_only_numbersValida que una cadena contenga solo nmeros y opcionalmente puede permitir el ingreso de 1 guin medio (-) entre nmeros.Sintaxis:is_only_numbers($string, $allow_dash);

Parmetros:$string Cadena a evaluar $allow_dash (opcional). Boolean. True, para permitir un guin medio entre nmeros. False, para no permitir guiones medios. Valor por defecto: FALSE

Valores devueltos:

Devuelve TRUE si la cadena evaluada contiene solo nmeros (y guiones medios si $allow_dash se indic como true). De lo contrario, retorna FALSE.$cadenas = array('Cadena 'Cadena 'Cadena 'Cadena 'Cadena 'Cadena 'Cadena 'Cadena 'Cadena ); 1'=>'65845', 2'=>'8 6584', 3'=>'656-9852', 4'=>'56+558', 5'=>'25.15', 6'=>'325_458', 7'=>'+54 (911) 0000-0000', 8'=>'+54 011 00000000', 9'=>'15-4444-9999'

foreach($cadenas as $cadena=>$valor) { if(is_only_numbers($valor) == true) { print $cadena . ' contiene solo numeros'; } else { print $cadena . ' no contiene solo numeros'; } } /* Salida: Cadena 1 Cadena 2 Cadena 3 Cadena 4 Cadena 5 Cadena 6 Cadena 7 Cadena 8 */

contiene solo numeros no contiene solo numeros no contiene solo numeros no contiene solo numeros no contiene solo numeros no contiene solo numeros no contiene solo numeros no contiene solo numeros

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 37Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

is_nicknameValida apodos (nicknames o nombres de usuario) que solo puedan contener al menos una o ms letras y/o uno o ms nmeros, permitiendo guiones bajos (_) consecutivos al inicio, final o entre medio de la cadena.Sintaxis:is_nickname($string, $int_min, $int_max);

Parmetros:$string Cadena a ser evaluada $int_min (opcional) Nmero entero. Cantidad de caracteres mnimos que puede contener la cadena. El valor por defecto es 6. $int_max (opcional) Nmero entero. Indica la cantidad de caracteres mximos que puede contener la cadena. El valor por defecto es 12.

Valores devueltos:

Devuelve TRUE si $string es un nickname vlido. De lo contrario, retorna FALSE.$nicknames = array('Nick 'Nick 'Nick 'Nick 'Nick 'Nick 'Nick 'Nick ); 1'=>'____jr___75', 2'=>'cuervo72', 3'=>'____TurKa_ar', 4'=>'__^yop^__', 5'=>'@myself', 6'=>'juan carlos', 7'=>'juan-carlos', 8'=>'juan_carlos'

foreach($nicknames as $nick=>$valor) { if(is_nickname($valor) == true) { print $nick . ' es valido'; } else { print $nick . ' no es valido'; } } /* Salida: Nick 1 es Nick 2 es Nick 3 es Nick 4 no Nick 5 no Nick 6 no Nick 7 no Nick 8 es */

valido valido valido es valido es valido es valido es valido valido

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 38Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

is_personal_nameValida nombres personales completos (nombres y apellidos / apellidos y nombres) siendo sensible a maysculas y minsculas. Admite apstrofos caractersticos en apellidos de origen italiano y francs. No admite abreviaciones, respondiendo afirmativamente solo a la consigna "nombre completo" (Juan C Lpez retornara una negacin a is_personal_name, puesto que lingsticamente no responde a "nombre completo" sino que la "C" es abreviacin del segundo nombre. (vase ejemplo para una idea ms amplia de los formatos de nombres admitidos y no admitidos)Sintaxis:is_personal_name($string);

Parmetros:$string Cadena a evaluar

Valores devueltos:

Devuelve TRUE si $string es un nombre personal vlido. De lo contrario, devuelve FALSE.$names = array('Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre 'Nombre ); 1'=>'Juan Carlos Lopez', 2'=>'Juan Carlos Lopez y Planes', 3'=>'Juan Lopez', 4'=>'Juan Carlos D\'Alessando', 5'=>'Juan Carlos D\'alessandro', 6'=>'Juan C Lopez', 7'=>'juan carlos lopez', 7'=>'Juan carlos Lopez', 8'=>'Juan', 9'=>'Juan CL', 10'=>'Juan C L', 11'=>'J C Lopez', 12'=>'JC Lopez', 13'=>'Lopez Juan Carlos', 14'=>'Lopez y Planes Juan Carlos', 15'=>'Lopez Y Planes Juan Carlos', 16'=>'D\'Alessandro Juan Carlos', 17'=>'D\'alessandro Juan Carlos', 18'=>'Juan Carlos D\' Alessandro'

foreach($names as $name=>$valor) { if(is_personal_name($valor) == true) { print $valor . ' es un nombre personal valido'; } else { print $valor . ' no es un nombre valido'; } }

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 39Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

/* Salida: Juan Carlos Lopez es un nombre personal valido Juan Carlos Lopez y Planes es un nombre personal valido Juan Lopez es un nombre personal valido Juan Carlos D'Alessando es un nombre personal valido Juan Carlos D'alessandro es un nombre personal valido Juan C Lopez no es un nombre valido Juan carlos Lopez no es un nombre valido Juan no es un nombre valido Juan CL no es un nombre valido Juan C L no es un nombre valido J C Lopez no es un nombre valido JC Lopez no es un nombre valido Lopez Juan Carlos es un nombre personal valido Lopez y Planes Juan Carlos es un nombre personal valido Lopez Y Planes Juan Carlos no es un nombre valido D'Alessandro Juan Carlos es un nombre personal valido D'alessandro Juan Carlos es un nombre personal valido Juan Carlos D' Alessandro no es un nombre valido */

is_strlen_betweenEvala si una cadena tiene entre n1 y n2 caracteres permitiendo o no espacios en blanco.Sintaxis:is_strlen_between($string, $int_min, $int_max, $allow_white_spaces);

Parmetros:$string Cadena a ser evaluada $int_min (opcional) Numero entero. Cantidad mnima de caracteres que debe tener la cadena. Valor por defecto: 1. $int_max (opcional) Numero entero. Cantidad mxima de caracteres permitidos. Valor por defecto: 255. $allow_white_spaces (opcional) Boolean. True para permitir espacios en blanco. False para no permitir espacios en blanco. Valor por defecto: FALSE

Valores devueltos:

Devuelve TRUE si si la cantidad de caracteres de la cadena est entre n1 y n2. De lo contrario, devuelve FALSE.$cadena = 'Esta es una cadena que tiene ms caracteres de los

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 40Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

permitidos'; if(is_strlen_between($cadena, 6, 25, true) == true) { print 'Cadena es correcta'; } else { print 'Cadena es incorrecta'; } /* Salida: Cadena es incorrecta */

is_spanish_dateEvala si una fecha tiene formato espaol da, mes, ao, aceptando como separador: /, y . (25/10/2008, 25-10-2008, 25.10.2008). Adems del formato, evala que sea una fecha vlida llamando a la funcin checkdate() de PHP (tiene en cuenta aos bisiestos).Sintaxis:is_spanish_date($string_date, $string_separador);

Parmetros:$string Cadena a ser evaluada como fecha $string_separador (opcional) Separador para da, mes, ao. Acepta: barra (/), guin medio (-) y punto (.). Valor por defecto: '/'.

Valores devueltos:

Devuelve TRUE si si la cadena es una fecha vlida, con formato espaol vlido. De lo contrario, devuelve FALSE.$fecha = '25/02/1970'; if(is_spanish_date($fecha) == true) { print 'Es una fecha vlida'; } else { print 'Fecha es incorrecta'; } /* Salida: Es una fecha vlida */

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 41Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

is_usa_dateEvala si una fecha tiene formato americano, mes, da, ao, aceptando como separador: /, - y . (10/25/2008, 10-25-2008, 10.25.2008). Adems del formato, evala que sea una fecha vlida llamando a la funcin checkdate() de PHP (tiene en cuenta aos bisiestos).

Sintaxis:is_usa_date($string_date, $string_separador);

Parmetros:$string Cadena a ser evaluada como fecha $string_separador (opcional) Separador para da, mes, ao. Acepta: barra (/), guin medio (-) y punto (.). Valor por defecto: '/'.

Valores devueltos:

Devuelve TRUE si si la cadena es una fecha vlida, con formato americano vlido. De lo contrario, devuelve FALSE.$fecha = '02/25/1970'; if(is_usa_date($fecha) == true) { print 'Es una fecha vlida'; } else { print 'Fecha es incorrecta'; } /* Salida: Es una fecha vlida */

is_canonical_dateEvala si una fecha tiene formato cannico (ISO), ao, mes, da, aceptando como separador: /, - y . (2008/10/25, 2008-10-25, 2008.10.25). Adems del formato, evala que sea una fecha vlida llamando a la funcin checkdate() de PHP (tiene en cuenta aos bisiestos).Alias:is_iso_date ()

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 42Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Sintaxis:is_canonical_date($string_date, $string_separador);

Parmetros:$string Cadena a ser evaluada como fecha $string_separador (opcional) Separador para da, mes, ao. Acepta: barra (/), guin medio (-) y punto (.). Valor por defecto: '/'.

Valores devueltos:

Devuelve TRUE si si la cadena es una fecha vlida, con formato cannico (ISO) vlido. De lo contrario, devuelve FALSE.$fecha = '1970-25-02'; if(is_canonical_date($fecha, '-') == true) { print 'Es una fecha vlida'; } else { print 'Fecha es incorrecta'; } /* Salida: Es una fecha vlida */

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 43Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Documentacin Tcnica y Manual de Referencias de PHPFormValidatorPHPFormValidator es una clase para PHP 5 que con tan solo instanciar al objeto PHPFormValidator y pasarle una matriz con el nombre de los campos del formulario con su tipo de datos correspondiente, lo validar exhaustivamente, devolviendo el resultado de la validacin. PHPFormValidator trabaja en forma conjunta con PHPAggregate para la validacin del tipo de datos.

Sintaxis:$fv = new FormValidator('[GET|POST]', $array_field_list);

Parmetros:string GET | string POST Mtodo a travs del cual, se envan los datos del formulario. El valor por defecto es POST, pero puede modificarlo, etablecindolo en GET. $array_field_list Matriz conteniendo el nombre de los campos a validar, su tipo de datos y parmetros opcionales para la validacin (ver ms abajo: "tipos de datos admitidos"). Su sintaxis es: $array_field_list = array( 'nombre_del_campo_1'=>array('tipo_de_datos', $requerid, [opciones]), 'nombre_del_campo_5'=>array('tipo_de_datos', $requerid, [opciones]), ); Donde: $requerid admite como valor TRUE o FALSE respondiendo a si es o no un campo obligatorio. [opciones] (opcional) responde a los parmetros necesarios para validar el tipo de datos. Las opciones a pasar como parmetros adicionales responden al tipo de datos segn las funciones de PHPAggregate

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 44Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

Tipos de datos admitidosA continuacin, se muestra una tabla con los tipos de datos admitidos que pueden pasarse para ser validados:Tipo de datos alphabetic alphanumeric numeric email password secure_password ip nickname username personal_name spanish_date usa_date date iso_date canonical_date string boolean Descripcin Parmetros valida que una cadena contenga solo is_alphabetic() letras del alfabeto (funcin de PHPAggregate) valida que una cadena contenga solo is_alphanumeric() letras y nmeros (funcin de PHPAggregate) valida que una cadena contenga solo is_only_numbers() nmeros (funcin de PHPAggregate) valida un e-mail valida una contrasea estndar valida una contrasea segura valida una direccin IP is_email() (funcin de PHPAggregate) is_password() (funcin de PHPAggregate) is_secure_password() (funcin de PHPAggregate) is_ip() (funcin de PHPAggregate)

valida un nickname (apodo, nombre is_nickname() de usuario) (funcin de PHPAggregate) valida nombre y apellido completos is_personal_name() de una persona (funcin de PHPAggregate) valida una fecha con espaol (da, mes, ao) valida una fecha con americano (mes, da, ao) formato is_spanish_date() (funcin de PHPAggregate) formato is_usa_date() (funcin de PHPAggregate)

valida una fecha con formato is_iso_date() cannico (ISO: ao, mes, da) (funcin de PHPAggregate) valida que una cadena entre n1 y n2 caracteres valida que booleano el dato sea contenga is_strlen_between() (funcin de PHPAggregate) de tipo is_bool() (funcin de PHP 4, PHP 5)

Valores devueltos:El Objeto PHPFormValidator retorna dos propiedades pblicas:invalid_fields Array con el nombre de los campos evaluados como invlidos, con su correspondiente error. form_data Array con el nombre de los campos evaluados y su correspondiente valor.

AVISO invalid_fields retornar NULL cuando no existan campos evaluados como invlidos.

Manual de Europio v1.0 Licencia Creative Commons (contenido libre). Pgina 45Este manual de termin de escribir el 07/09/2011 01:31 a.m. Visite la Web del Autor para obtener versiones recientes.

AVISO PHPFormValidator retornar un error Warning: The execution was stopped! frenando la ejecucin del script mediante una llamada a exit(), cuando un error de programacin en la instancia al objeto sea encontrado.

Error Warning: The execution was stopped!PHPFormValidator puede responder con el siguiente mensaje tras verse forzado a llamar al mtodo exit() de PHP:Warning: The execution was stopped! validate_form() method said: I can not continue because I found an error programming in the received arguments: [error_d