Post on 04-Jan-2016
PRADO
PRESENTADO A:
Ing. Libardo Pantoja
PRESENTADO POR:
Edwar Alejandro Giraldo
UNIVERSIDAD DEL CAUCA
INGENIERIA DE SISTEMAS
POPAYAN-CAUCA
TUTORIAL PRADO
ELABORACION DE UN CRUD
PRADO es una capa de programación (framework) basada en componentes y programación
dirigida por eventos, para desarrollo de aplicaciones Web en PHP 5. Las siglas PRADO significan en
español Desarrollo Rápido de Aplicaciones con Programación Orientada a Objetos en PHP
(PHP Rapid Application Development Object-oriented).
El principal objetivo de PRADO es utilizar al máximo la reutilización en la programación Web. Por
reusabilidad, queremos decir no solamente reutilizar el código propio, si no el de otros
programadores de una manera fácil. Lo último dicho es más importante, ya que evita el esfuerzo
de reinventar nuevamente la rueda y además posibilita disminuir notablemente los tiempos de
desarrollos. La introducción al concepto de componentes tiene este propósito.
Para alcanzar el propósito mencionado, PRADO estipula un protocolo para escribir y usar
componentes para construir una aplicación Web. Un componente es una pieza de programa que
es autocontenido y puede ser reutilizado con una mínima personalización del mismo. Nuevos
componentes pueden ser creados por una simple composición de componentes existentes.
Para facilitar la interacción con componentes, PRADO implementa el paradigma de la
programación dirigida por eventos (event-driven) que permite la delegación de comportamientos
extensibles a los componentes. Las actividades de los usuarios finales, tales como hacer clic en un
botón de un formulario, son capturados como eventos en el lado del servidor (server events).
Métodos o funciones deben ser enlazadas a dichos eventos de tal manera que cuando los eventos
sucedan, estos son invocados automáticamente para responder a dicho evento. Comparado con la
programación Web tradicional en la cual los desarrolladores tienen que tratar directamente con
las variables de arreglo POST y GET, la programación dirigida por eventos ayuda a los
desarrolladores enfocarse mejor en las necesidades lógicas y reducir significativamente el código
de bajo nivel repetitivo (low-level repetitive coding).
En resumen, desarrollar aplicaciones Web con PRADO principalmente involucra instantáneamente
tipos de componentes predesarrollados, configurarlos mediante sus propiedades, responder a sus
eventos escribiendo funciones manipuladoras de los mismos, y agrupándolos dentro de páginas
para la aplicación. Es muy similar al Kit de herramientas RAD de Borland Delphi y Microsoft Visual
Basic, que son utilizadas para desarrollar aplicaciones (Interfaces Graficas de Usuarios, GUI) de
escritorio.
Características
La siguiente lista es un pequeño resumen de las características principales de PRADO,
• Reutilización - Los códigos que se rigen por el protocolo basado en componentes de
PRADO son altamente reutilizables. Esto beneficia a los equipos de desarrollo a largo
plazo, ya que pueden reutilizar sus trabajos anteriores e integrar otras partes de trabajo
con facilidad.
• Programación dirigida por eventos - Las actividades del usuario final, tales como como
hacer clic en un botón de enviar, son capturadas como eventos del servidor permitiendo
que los desarrolladores tengan un mejor enfoque en interacciones del usuario.
• Integración de equipo - La capa de presentación y la capa lógica son almacenados por
separado. Las aplicaciones en PRADO pueden ser armadas por temas.
• Controles web Potentes - PRADO viene con un conjunto de poderosos componentes que
se ocupan de interfaces de usuario Web. Altamente interactivo, se puede crear páginas
web con unas pocas líneas de código. Por ejemplo, utilizando el componente DataGrid, se
puede crear rápidamente una página que presenta una tabla de datos que permite la
paginación, la clasificación, editar y eliminar filas de los datos.
• Fuerte soporte de bases de datos - Desde la versión 3.1, PRADO ha sido equipada con total
soporte de bases de datos, escrita en forma nativa y, por tanto, encaja con el resto del
framework PRADO. De acuerdo a la complejidad de los objetos de negocio, se puede optar
por utilizar la PDO simple, basada en el acceso a los datos, o el ampliamente conocido
Active Record, o el mapa completo de los objetos del negocio SqlMap.
• Soporte de AJAX sin fisuras - Uso de AJAX en PRADO nunca ha sido más fácil con su
innovador Controles Activos (Active Controls) introducidos desde la versión 3.1. Puede
escribir una aplicación AJAX sin escribir una sola línea de código javascript. De hecho, que
la utilización de los Controles Activos, no es muy diferente a la utilización de componentes
no-AJAX.
• Soporte de I18N y L10N - PRADO incluye soporte completo para crear aplicaciones con
múltiples idiomas y la localización.
• Compatibilidad XHTML - Las páginas Web generadas por PRADO son compatibles con
XHTML.
• Albergar trabajos ya existentes - PRADO es un framework genérico, con especial atención
a la capa de presentación. No excluye a desarrolladores que hacen uso de la mayoría de
las actuales bibliotecas de clase o juegos (kits) de herramientas. Por ejemplo, uno puede
usar ADOdb o Creole para tratar con base de datos en su aplicación PRADO.
• Otras características - Potente manipulación de errores /excepciones y registro de
mensajes (message logging); cache genérico y memoria caché de salida selectiva; manejo
de errores personalizable y localizable; extensible autentificación y autorización;
prevención de medidas de seguridad tales como cross-site script (XSS) , protección de
cookies, etc.
Modelo Vista Controlador
La mayoría de frameworks de PHP principalmente se centra en separar la presentación y la lógica y
promueve el patrón de diseño MVC (modelo-vista-controlador). PRADO logra el mismo objetivo,
naturalmente, al exigir que la lógica se almacene en las clases y la presentación en las plantillas.
PRADO hace mucho más en otros aspectos distintos de MVC. Se llena de mucho espacio en blanco
en la programación web en PHP, con su paradigma de programación basada en componentes, la
riqueza de su conjunto de controles Web, su potente soporte de bases de datos, su flexible
manejo de errores y registro de mensajes, y muchos otros.
Instalación
Lo primero que debemos hacer es ir a la página principal de Prado http://www.pradosoft.com y
descargar la última versión disponible en la pestaña Download, una vez bajada a tu computador,
se mostrara como un archivo .zip, este se descomprime en la carpeta “htdocs” de “xampp”, a la
carpeta que resulta de la descompresión del .zip, por razones de facilidad le cambiamos el nombre
a “prado”.
Ahora debemos agregar una nueva variable al path, para hacer esto damos click al menú inicio, y
le damos click derecho a equipo, y seleccionamos propiedades, nos saldrá la siguiente ventana.
Seleccionamos Configuración avanzada del sistema, aparecerá una ventana, donde damos click a
variables de entorno
En la lista de variables del sistema buscamos la variable path y le damos a editar y agregamos lo
que esta subrayado
Creación de un nuevo proyecto
Para crear una estructura de trabajo en prado, abrimos una consola de Windows y vamos hasta el
directorio donde queremos guardar el proyecto. Para poder correr nuestro proyecto en nuestro
servidor local en este caso xampp, debemos guardarlo en la carpeta htdocs.
Una vez estamos ubicados en el directorio ejecutamos la siguiente línea en la consola de Windows
Remplazamos “nombre_proyecto” por el nombre que le queremos dar al proyecto para este
ejemplo será libreria
Si la línea esta bien escrita aparecerán los siguientes mensajes
Ya tenemos el esqueleto de nuestro proyecto, este es la estructura que tiene
Ahora tenemos un esqueleto de la aplicación PRADO accesible a través de la URL
http://localhost/demo/index.php que nos lleva a una página Web que muestra en ingles
"Bienvenido a PRADO".
Revisemos el esqueleto del proyecto
Definimos como la carpeta principal a "nombre_proyecto" con el nombre del proyecto que
estamos realizando, de esta se desprenden carpetas hijas: "assets", "protected".
"assets", guarda todos los archivos privados que deseas hacer públicos por instrucción en
el código fuente de tu aplicación, de manera que serán visibles por todos desde el navegador.
"protected", es el directorio principal de tu aplicación, principalmente se utiliza para guardar
scripts privados e información que no será visible para los usuarios finales.
"runtime", no te preocupes por este directorio nunca, pues jamás le pondrás una mano encima
pero no por ello debes dejar de saber en que consiste, "runtime" conserva toda la información
generada a la hora de correr la aplicación, data cacheada, estado, etc. Es fundamental que este
directorio pueda ser escrito por Apache.
"pages", como su nombre lo indica mantiene todas los .pages y .php que generaras una vez vayas
escribiendo tu aplicación.
Además de la estructura creara los archivos cuya funciones se explican a continuación:
"index.php", este es el script inicial de Prado y es requerido por todas las aplicaciones escritas
usando el Framework de la misma manera es el único script que es visible por los usuarios finales y
a través de él se accesan las otras páginas.
"Home.page", es la plantilla que por defecto es devuelta al navegador cuando no hacemos una
petición especifica, en los archivos .page colocaremos el código HTML en conjunto con los
controles con los que necesitamos interactuar.
"Home.php", es la página con las instrucciones que ejecutaremos dependiendo a las llamadas de
los eventos de los controles que coloquemos en los .page, contiene la clase para dicha
pagina así mismo contiene el método que dará respuesta a cualquier evento llamado por los
objetos antes mencionados.
“application.xml”, contiene la configuración de la aplicación. Su principal objetivo es personalizar
de una forma configurable la instancia de aplicación creado en el script de entrada.
EL CRUD
Ya sabemos como crear un proyecto y conocemos la estructura de este, ahora vamos hacer
nuestro proyecto, este consistirá en un crud de libros.
Base de datos
Para nuestro crud de libro vamos a utilizar una base de datos que va tener el siguiente modelo
Xampp ya nos provee de un motor de base de datos llamado MySql, podemos acceder a el
escribiendo en el navegador http://localhost/phpmyadmin/, aquí podremos crear nuestra base de
datos, para nuestro ejemplo la llamamos “libreria” y ejecutamos el siguiente script.
drop table if exists LIBRO;
drop table if exists EDITORIAL;
create table EDITORIAL
(
CODIGO_EDITORIAL int not null AUTO_INCREMENT,
NOMBRE varchar(20),
PAIS varchar(20),
primary key (CODIGO_EDITORIAL)
);
create table LIBRO
(
CODIGO_EDITORIAL int,
ISBN int not null,
TITULO varchar(50),
ANIO int,
RESUMEN varchar(1000),
primary key (ISBN)
);
alter table LIBRO add constraint FK_RELATIONSHIP_1 foreign key (CODIGO_EDITORIAL)
references EDITORIAL (CODIGO_EDITORIAL) on delete cascade on update cascade;
INSERT INTO `editorial` (`nombre`, `pais`) VALUES('Norma', 'Colombia');
INSERT INTO `editorial` (`nombre`, `pais`) VALUES('Amat', 'China');
INSERT INTO `editorial` (`nombre`, `pais`) VALUES('Rino', 'Mexico');
INSERT INTO `editorial` (`nombre`, `pais`) VALUES('Planeta', 'Colombia');
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(15246,'Enemigos',2012,'la historia definitiva del FBI.',1);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(123565,'Perseguidos por el paraiso',2013,'Por que la
sociedad contemporanea requiere de las drogas? Hacia donde nos dirigimos: al cielo o al infierno? El uso de las drogas crea la
expectativa de superar la desdicha y propiciar una felicidad casi paradisiaca.',1);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(132255,'Una vacante imprevista',2000,'Con su plaza
adoquinada y su antiquisima abadia, Pagford Parece un tipico pueblecito ingles, un lugar idilico en el que la vida transcurre con placida
tranquilidad.',1);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(632589,'Pasaporte a la reinvencion',2012,'Un libro sobre
la busqueda de uno mismo, la brevedad de la vida y la necesidad de corregir cuando entramos en caminos que no son los propios. Un
relato que facilita al lector la identificacion con la protagonista y con lo que le sucede',2);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(154789,'101 cosas que ya sabes, pero siempre
olvidas',2010,' Este libro trata de esas cosas verdaderamente importantes que todos nosotros ya hemos aprendido, pero por alguna
misteriosa razon seguimos olvidando.',2);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(623015,'Pensar como Einstein',2007,'puede aprender los
trucos y tecnicas utilizadas por Albert Einstein y otras grandes mentes para resolver problemas desconcertantes',2);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(000036,'Limpiando Millones',2008,'',3);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(625896,'Las Cartas William Campbell Douglass',2008,'',3);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(666322,'Por que fracasan los paises',2012,'Por que una
nacion es rica y la otra, pobre?',4);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(753264,'Por que le pasan cosas malas a la gente
buena?',2011,'Un libro lleno de testimonios, conocimientos, gozo y esperanza, que ha ayudado a entender , sanar y cambiar la vida me
muchas personas , como tambien se sus familias.',4);
INSERT INTO `libro`(`isbn`,`titulo`,`anio`,`resumen`,`codigo_editorial`)VALUES(36589,'La noche en que Frankenstein leyo el
Quijote',2012,'Que libro perseguia el KGB? Que novela oculto Hitler? Quien penso en el orden alfabetico para organizar los libros? Que
autor burlo al indice de libros prohibidos de la Inquisicion? Estos y otros enigmas literarios encuentran respuesta en las paginas de La
noche en que Frankenstein leyo el Quijote',4);
Estableciendo conexión con la Base de Datos
Para utilizar la base de datos que acabamos de crear, primero tenemos que establecer una
conexión con ella.
Vamos a utilizar Data Access Objects (DAO) para abstraer los mecanismos de acceso a datos. Si en
el futuro se decide utilizar un DBMS diferente (por ejemplo, PostgreSQL, Oracle, etc.) para
almacenar nuestros datos, sólo tenemos que cambiar el nombre de la fuente de base de datos y
podemos mantener nuestro código PHP intacto.
Modificamos nuestro archivo de configuración de la aplicación protected/ application.xml
mediante la inserción de las siguientes líneas, que le dice a Active Record cómo conectarse a la
base de datos recién creada:
<modules> <module id="db" class="System.Data.TDataSourceConfig"> <database ConnectionString= "mysql:host=localhost;dbname=libreria" username="root" password="" /> </module> <module class="System.Data.ActiveRecord.TActiveRecordConfig" ConnectionID="db" /> </modules>
La configuración anterior muestra que estamos añadiendo dos módulos a nuestra aplicación. El
TDataSourceConfig módulo está configurado con la cadena de conexión
"mysql:host=localhost;dbname=libreria" username="root" password="" que apunta a nuestra
base de datos. Esta conexión es utilizada por el TActiveRecordConfig módulo que es requerido por
Active Record.
Creación de clases de Active Record
Tenemos que crear dos Active Record clases, LibroRecord y EditorialRecord , para representar los
registros de datos de los Libro y la Editoriales respectivamente. Clases de Active Record que se
extienden desde la base de la clase ActiveRecord , y debe definir los nombres de propiedades que
coinciden con los nombres de los campos de la tabla correspondiente.
Para organizar mejor nuestros directorios, creamos una nueva carpeta Clases en el directorio
protected de nuestro proyecto, para almacenar los archivos de clase. También modificar nuestra
configuración de la aplicación mediante la inserción de las siguientes líneas. Es equivalente a
agregar el directorio protected/Clases al include_path de PHP, lo que nos permite utilizar las
clases.
<paths>
<using namespace="Application.Clases.*" />
</paths>
En lugar de escribir las clases de forma manual, vamos a utilizar la herramienta de línea de
comandos PRADO, para generar las clases.
Para hacer uso de el Active record abrimos la consola de Windows y vamos al directorio del
proyecto y ejecutamos la siguiente línea de comando
Php C:\xampp\htdocs\prado\framework\prado-cli shell.
Como vemos en la imagen aparece un menú, aquí ejecutamos las siguiente línea de comando
generate libro Application.Clases.LibroRecord y generate editorial Application.Clases.EditorialRecord
Si fueron ejecutadas bien las líneas anteriores deben aparecer los siguientes mensajes
Ahora vamos a nuestro proyecto y vemos que están creadas nuestras clases
En el archivo LibroRecord.php vemos las siguientes líneas de código
Añadimos las siguientes líneas de código
Una vez establecida la conexión y creadas las clases records, el objetivo es gestionar los datos de la
base de datos, para ello se debe crear una estructura similar a esta
Donde se deberán crear tanto las paginas “.page” como las “.php” de cada uno de los métodos del
crud.
Esto es lo que llevara cada página:
listarLibros.page
Eliminar.php
MasterPage
Este proyecto fue realizado utilizando un masterpage, ahora vamos a ver el proceso para incluirla
un nuestro proyecto
1. Descargue una plantilla de este link http://www.mediafire.com/?cn0ucep7h8e7eg7 donde
se guarda un .rar llamado template
Este archivo contiene los siguientes archivos
2. Ahora vamos a crear dos capetas la primera es img que la creamos en el directorio raíz del
proyecto, aquí copiamos el contenido de la carpeta img del .rar y la otra es templates que
la creamos en la carpeta protected en esta copiamos el archivo Masterpage.tpl, la
estructura del proyecto queda así
Donde la carpeta templates almacenará la información de la plantilla descargada, a la cual
le llamaremos MasterPage.
3. Ahora creamos el archivo Masterpage.php en la carpeta templates y colocamos lo
siguiente
4. En aplicación.xml se copian las siguientes líneas de código, para hacer el llamado a la
carpeta templates y a la carpeta clases que contendrá las clases de las tablas de la base de
datos.
5. En la carpeta pages se crean los siguientes archivos:
Home.page este archivo se modifica con la siguiente informacion:
Referencias
• http://www.pradosoft.com/demos/quickstart/index.php?page=GettingStarted.AboutPrad
o¬heme=true&lang=es
• http://www.pradosoft.com/demos/quickstart/
• http://www.pradosoft.com/demos/blog-tutorial/
• http://www.pradosoft.com/documentation/
• http://www.xisc.com/
• http://pradolabs.blogspot.com/