Tutorial Prado

22
PRADO PRESENTADO A: Ing. Libardo Pantoja PRESENTADO POR: Edwar Alejandro Giraldo UNIVERSIDAD DEL CAUCA INGENIERIA DE SISTEMAS POPAYAN-CAUCA

Transcript of Tutorial Prado

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

listarLibros.php

Nuevo.page

Nuevo.php

Modificar.page

Modificar.php

Eliminar.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:

Home.php

6. Esta es la vista final de la pagina

Referencias

• http://www.pradosoft.com/demos/quickstart/index.php?page=GettingStarted.AboutPrad

o&notheme=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/