Transcript
Page 1: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 1/20

 

UniversidadcentroamericanaFacultad de ciencia, tecnología y ambiente

IMPLEMENTACION DE APLICACIONES ORIENTADO AOBJETOS

NOMBRES:

• David Antonio González Blanchard• Aura Lila Gutiérrez Tejada• Francys Jessenia Gómez Sánchez• Ángel Antonio González Oporta• Ramces Exequiel Cabezas

PROFESOR:

Armando López

Page 2: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 2/20

 

INGENIERIA EN SISTEMAS Y TECNOLOGIAS DE LA INFORMACION

FrameWork CakePHPIntroducción

CakePHP es un framework (entorno de trabajo) libre y de código abierto para eldesarrollo en PHP. Es una estructura de librerías, clases y una infraestructura run-time (en tiempo de ejecución) para programadores de aplicaciones weboriginalmente inspirado en el framework Ruby On Rails.Su principal meta espermitir su trabajo de manera estructurada y rápida, sin pérdida de flexibilidad.

Características

CakePHP tiene varias características que lo hacen una gran opción como unframework para desarrollo de aplicaciones rápidas y con el menor costo demolestia.

• Comunidad activa y amigable• Licencia flexible• Compatibilidad con PHP4 y PHP5• CRUD integrado para la interacción con la base de datos y las preguntas

simplificadas• Scaffolding• Arquitectura Modelo Vista Controlador (MVC)• Despachador de peticiones con buena vista, URL personalizadas• Validación incorporada• Plantillas rápidas y flexibles (Sintaxis PHP, con Helpers)• Helpers en Vistas para AJAX, Java script, Formularios HTML y mas• Seguridad, Sesiones y Componentes para Manejo de Peticiones• Lista de Control y Acceso flexible• Desinfección de datos• Cache flexible en Vistas• Trabaja desde cualquier subdirectorio web del sitio, con poca o ninguna

configuración de Apache envuelta

Historia de CakePHP

En 2005, Michal Tatarynowicz escribió una mínima versión de un FrameworkRápido para Aplicaciones en PHP. El encontró que ese fue el principio de un muybuen framework. Michal publico el framework bajo la licencia MIT, mezclando

Page 3: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 3/20

 

Cake, y abriéndose a una comunidad de desarrolladores, quienes ahoramantienen Cake bajo el nombre CakePHP.

Modelo de CakePHP

Cake PHP utiliza el modelo vista-control es un patrón para diseño de software queayuda a separar lógicamente el código haciéndolo reusable, mantenible ygeneralmente mejor. La entrada del usuario, el modelado del mundo externo, y laretroalimentación visual para el usuario son separados y dirigidos por los objetosmodelo, vista y controlador.

En términos de Cake, El modelo (“Modelo” ) representa una base de datos, tabla oregistro, así como sus relaciones con otras tablas o registros. Los Modelos(“Models” ) contienen las reglas para la validación de datos. Estas reglas sonaplicadas cuando en el modelo (“model” ) se insertan o actualizan datos. Lasvistas en cake están representadas por los archivos “view” , los cuales sonarchivos de HTML con código PHP incluido. Los controladores (“controllers” ) deCake manejan las peticiones del servidor. Toma las entradas del usuario (URL ydatos de POST), aplica la lógica de negocios, utiliza los modelos (“models” ) paraleer y escribir en base de datos y otras rutas, y manda la salida apropiada dedatos con los archivos de vistas (“view” ).

Para hacer tan fácil como sea posible la organización de tu aplicación, Cake usaesto no solo para manejar como interactúan los objetos dentro de la aplicación, sino también como son almacenados los archivos.

Descripción de la disposición de archivos de Cake

Cuando se desempaqueta Cake en el servidor se encontraran 3 carpetasprincipales:

• app• cake• vendors

La carpeta cake es el lugar para las bibliotecas base de Cake La carpeta app esel lugar donde estarán las carpetas y archivos específicos de su aplicación. Laseparación entre la carpeta cake y la carpeta app hace posible para usted tener 

Page 4: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 4/20

 

muchas carpetas app compartiendo un solo conjunto de bibliotecas de Cake. Lacarpeta vendors se utiliza para para guardar en ella bibliotecas de terceros.

Requerimientos

Para usar CakePHP usted debe primero tener un servidor que tenga las librerías yprogramas para correr CakePHP.

Estos son los requerimientos para la puesta en marcha del servidor para correCakePHP:

1. Un servidor HTTP (como Apache) con lo siguiente habilitado: sesiones,mod_rewrite (no absolutamente necesario, pero preferido).

2. PHP 4.3.2 o superior. Si CakePHP trabaja bien en PHP 4 o 5.

3. Un motor de base de datos (ahora, hay soporte para MySQL, PostgreSQLy un envoltorio para ADODB)

Estructura de CakePHP

CakePHP incluye las clases Controlador [Controller], Modelo [Model] y Vista[View], pero también incluye otras clases y objetos que hacen que el desarrollo enMVC sea un poco más rápido y agradable. Los Componentes [Components],

Comportamientos [Behaviors], y Ayudantes [Helpers] son clases que proporcionanextensibilidad y reusabilidad; agregan rápidamente funcionalidad a las clasesbase MVC de las aplicaciones.

Extensiones de los Controladores ("Componentes")

Un componente es una clase que ayuda a la lógica de un controlador. Si tienesalguna lógica y la quieres compartir entre varios controladores (o aplicaciones), uncomponente suele ser una buena elección. En lugar de escribir lógica en elmétodo de un controlador, puedes empaquetarla en un componente para poder compartirla.

Los Controladores también están equipados con callbacks. Puedes utilizar estoscallbacks si necesitas insertar alguna lógica en las operaciones del núcleo deCakePHP. Los Callbacks disponibles incluyen:

• beforeFilter(), se ejecuta antes que cualquier otra acción del controlador 

Page 5: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 5/20

 

• beforeRender(), se ejecuta después de la lógica del controlador, pero antesde que la vista se renderice

• afterFilter (), se ejecuta después de toda la lógica del controlador, incluido

el renderizado de la vista. Puede que no haya ninguna diferencia entreafterRender () y afterFilter (), a menos que hayas llamado manualmente arender () en el controlador y hayas incluido alguna lógica después de esallamada.

Extensiones de las Vistas

Un ayudante [Helper] es una clase que ayuda a la lógica de una vista. Del mismomodo que varios controladores utilizan un componente, los ayudantes [helpers]

hacen que varias vistas accedan y compartan lógica presentacional. Con uno delos ayudantes del núcleo, el AjaxHelper, el manejo de las peticiones Ajax en lasvistas es mucho más fácil.

La mayoría de las aplicaciones repiten piezas de código en sus vistas. CakePHPfacilita la reutilización de este código con diseños [layouts] y elementos[elements]. Por defecto, toda vista renderizada por un controlador se coloca en undiseño [layout].

Los elementos entran en juego cuando hay que reutilizar estos fragmentospequeños de contenido.

Extensiones de los Modelos

Del mismo modo, los Comportamientos [Behaviors] son formas de añadir funcionalidad común entre los modelos. Por ejemplo, si almacena datos de losusuarios en una estructura de árbol, puede especificar que su modelo de usuariose comporte como un árbol, y obtener libre funcionalidad para eliminar, añadir, ymover nodos en la estructura de árbol subyacente.

Los modelos también cuentan con el apoyo de otra clase llamada DataSource(Origen de datos). Los DataSources son una abstracción que permite a los

modelos manipular diferentes tipos de datos en forma consistente. Si bien laprincipal fuente de datos en una aplicación CakePHP es a menudo una base dedatos, puede escribir DataSources adicionales que les permitan a sus modelosrepresentar canales RSS, archivos CSV, entradas LDAP, o eventos iCal. LosDataSources le permiten asociar registros de diferentes fuentes: en lugar de

Page 6: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 6/20

 

limitarse sólo a uniones [joins] SQL, los DataSources le permiten decirle a sumodelo LDAP que está asociado a muchos eventos iCal.

Así como los controladores, los modelos también incluyen callbacks:• beforeFind()• afterFind()• beforeValidate()• beforeSave()• afterSave()• beforeDelete()• afterDelete()

Los nombres de estos métodos deben ser lo suficientemente descriptivos paraque sepa lo que hacen. Asegúrese de obtener los detalles en el capítulo acercade los modelos.

Una petición típica de CakePHP

• El navegador hace una petición a su servidor Web.• El enrutador analiza la URL para extraer los parámetros para esta petición: el

controlador, la acción, y cualquier otro argumento(s) que pueda afectar a la lógicade negocio durante esta petición.

Page 7: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 7/20

 

• Usando las rutas, una petición URL es mapeada a una acción de controlador (unmétodo en una clase de controlador específica). En este caso, es el método comprar () del controlador PastelesController. El callback beforeFilter() del controlador es

llamado antes de que cualquier acción lógica del controlador sea ejecutada.• El controlador puede usar modelos para ganar acceso a los datos de la aplicación.

• Después que el modelo ha obtenido toda la información, ésta es devuelta alcontrolador. Pueden activarse callbacks del modelo.

• El controlador puede usar componentes para refinar aun más los datos o realizar otras operaciones (manipulación de sesiones, autenticación, o envíos de email, por ejemplo).

• Una vez que el controlador ha usado modelos y componentes para preparar suficientemente la información, ésta es entregada a la vista usando el método set()del controlador. Los callbacks de controlador pueden ser aplicados antes de que la

información sea enviada. La lógica de vista es ejecutada, la cual puede incluir eluso de elementos y/o ayudantes [helpers]. Por defecto, la vista es creada dentro deldiseño [layout].

• Callbacks del controlador adicionales (como afterFilter) pueden ser aplicados. Elcódigo completo creado por la vista es enviado al navegador.

Desarrollando con CakePHP

Configuración

Después de instalar CakePHP, crear una aplicación web básica solo requiereaplicar la configuración de una base de datos. Existen, otras configuraciones

opcionales, que puedes realizar con el objetivo de aprovechar las ventajas de laarquitectura flexible de CakePHP. Se pueden agregar fácilmente elementos alnúcleo de CakePHP, configurar URL personalizadas y definir inflexiones.

Configuración de Base de Datos

CakePHP espera que los detalles de configuración de la base de datos estén enapp/config/database.php. Un ejemplo de configuración puede encontrarse en elarchivo app/config/database.php.default. Esta configuración debería verse como:

var $default = array('driver' => 'mysql','persistent' => false,'host' => 'localhost',

'login' => 'cakephpuser','password' => 'c4k3roxx!','database' => 'mi_proyecto','prefix' => '');

1. var $default = array('driver' => 'mysql',

Page 8: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 8/20

 

2. 'persistent' => false,

3. 'host' => 'localhost',

4. 'login' => 'cakephpuser',

5. 'password' => 'c4k3roxx!',

6. 'database' => 'mi_proyecto',

7. 'prefix' => '');

8.

Clave Valor 

driver El nombre del controlador de base de datos que se desea utilizar. Ejemplo:mysql, postgres, sqlite, pear-nombrededriver, adodb-nombrededriver,mssql, oracle, odbc.

  persistent Si se debe usar o no una conexión persistente a la base de datos.

host El nombre de servidor de la base de datos (o dirección IP).

login El nombre de usuario para la cuenta.

  password La contraseña para la cuenta.

database Nombre de la base de datos a usar para la conexión

 prefix

(opcional)

El texto que prefija cada nombre de tabla en la base de datos. Útil si se

comparte la base de datos con varias aplicaciones. Dejar vacío si no sedesea ninguno.

 port(opcional)

El puerto TCP o socket Unix a usarse para la conexión con el servidor de base de datos.

encoding Indica la codificación de caracteres a usar para enviar las sentencias SQL alservidor.

schema Usado en la configuración de PostgreSQL para especificar el esquema autilizar.

Configuración del Core

La configuración de la aplicación en CakePHP se encuentraen /app/config/core.php. Este archivo es una colección de definiciones de

Page 9: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 9/20

 

variables Configure y definiciones de constantes que determinan como ha decomportarse la aplicación.

La Clase de Configuración

La nueva clase Configure de CakePHP puede ser utilizada para guardar yrecuperar valores específicos de la aplicación o de tiempo de ejecución. Estaclase permite almacenar cualquier cosa en ella, para luego usarla en cualquier lugar de tu código: una tentación segura para romper el patrón MVC con el cualfue diseñado CakePHP, así que, hay te ser cuidadoso con esta configuración.

Esta clase actúa como un singletón, y sus métodos pueden ser llamados desdecualquier lugar en tu aplicación, en un contexto estático

Métodos de la Clase Configure

Write: Utiliza write() para almacenar datos en la configuración de la aplicación  

write(string $clave, mixed $valor)Configure::write('Empresa.lema',' restaurante Manager evolution');

Read: Se usa para leer datos de configuración de la aplicación. Por defectodevuelve el importante valor de "debug" (nivel de depuración). Si se especificauna clave, los datos correspondientes son devueltos. Usando nuestros anterioresejemplos de write(), podemos leer esos datos de vuelta.

read(string $clave = 'debug')

Configure::read('Empresa.lema'); //devuelve: ‘ restaurante manager evolution'

Delete: Se usa para borrar información de configuración de la aplicación.delete(string $clave)

Configure::delete('Empresa.nombre');

Load: Usa este método para cargar información de configuración desde una

archivo específico.load(string $path)

Configure::load('mensajes');

Page 10: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 10/20

 

Versión: Devuelve la versión de CakePHP de la aplicación actual.version()

Variables de Configuración Principales de CakePHP

La clase Configure se usa para manejar un conjunto de variables de configuraciónde CakePHP. Estas variables pueden ser encontradas en app/config/core.php.

Variable de Configuración Descripción

debug Cambia el nivel de depuración de cake

0 = Modo produción. No produce ninguna salida.1 = Muestra los error y warnings.2 = Muestra los error, warnings, y consultas SQL

3 = Muestra los error, warnings, consultas SQL, y volcado completodel Controller.

App.baseUrl Descomenta esta definición si no deseas utilizar el mod_rewrite deApache. No te olvides de eliminar los archivos .htaccess también.

Routing.admin Descomenta esta definición si deseas utilizar las rutas admin deCakePHP. Asigna la variable al nombre de la ruta que te gustaríautilizar. Más adelante se explicará en detalle.

Cache.disable Cuando se asigna true, el cache se deshabilita para toda la aplicación.

Cache.check Si se asigna true, habilita el cache de las vistas. También es necesario

activar el cache en los controllers, pero esta variable habilita ladetección de dichas configuraciones.

Session.save Le indica a CakePHP qué mecanismo de almacenamiento de sesionesse debe utilizar 

php = Utiliza el almacenamiento por defecto de phpcake = Guarda los datos de sesión en /app/tmpdatabase = Guarda los datos en una tabla de la base de datos.Asegúrate de cargar el archivo SQL ubicadoen /app/config/sql/sessions.sql.

Session.table El nombre de la tabla (sin incluir el prefijo) que guarda los datos de lasesión.

Session.database El nombre de la base de datos que guarda los datos de sesión.

Session.cookie El nombre del cookie utilizado para hacer seguimiento de las sesiones

Page 11: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 11/20

 

Session.timeout El tiempo base de validez de la sesión en segundos. El valor realdepende de la variable Security.level

Session.start Inicia automáticamente la sesión cuando se asigna true.

Session.checkAgent Cuando se asigna false, Las sesiones de CakePHP no se aseguraránde que el "user agent" del usuario no cambie entre peticiones.

Security.level El nivel de seguridad de CakePHP. El tiempo de validez de la sesióndefinido en 'Session.timeout' se multiplica de acuerdo a lo siguiente.

Valores válidos:'high' = x 10'medium' = x 100'low' = x 300

Security.salt Una palabra aleatoria usada en sumas de seguridad.

Acl.classname, Acl.database Variables usadas para las Listas de Control de Acceso de CakePHP.Lee el capítulo de listas de control de acceso para más información.

La Clase App

Cargar clases adicionales se ha vuelto mucho más sencillo con CakePHP. Enversiones anteriores existían funciones diferentes para cargar una clasedependiendo de su tipo. Estas funciones han sido reemplazadas, ahora toda lacarga de clases debería hacerse a través de el método App::import(). Éste

método te asegura que una clase ha sido cargada sólo una vez, que las clasesque extiende se hayan cargado apropiadamente, y resuelve las rutas de ubicaciónautomáticamente en la gran mayoría de los casos.

App::import()A primera vista App::import parece complejo, sin embargo, en la mayoría de loscasos es suficiente con tan sólo dos parámetros.App::import($type, $name, $parent, $search, $file, $return);

App::import('Core', 'Sanitize');Lo anterior hará que la clase Sanitize esté disponible para su uso.

Con app::import() se pueden importar modelos, componentes, comportamientos,ayudantes y desde plugins.

Ejemplo, Para cargar vendors/geshi.php se utilizaría:

Page 12: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 12/20

 

App::import('Vendor', 'geshi');

Configuración de RutasEl enrutamanieto permite hacer una relación entre URLs y acciones de loscontroller. CakePHP viene configurado con un conjunto de rutas por defecto.Estas rutas te llevarán bastante lejos en cualquier aplicación. Puedes acceder auna acción directamente desde el URL colocando su nombre en la petición.También puedes pasar parámetros a las acciones de tus controladores usando elURL.

URL: /monos/saltar Dirige a: MonosController->saltar();

URL: /tareas/ver/45Dirige a: TareasController->ver(45);

Inflexiones Propias

Las convenciones de nomenclatura de CakePHP pueden ser muy buenas.Nombras la tabla de base de datos "usuarios", tu modelo "Usuario", tu controlador "UsuariosController" y todo funcionará automáticamente. La forma en queCakePHP sabe como atar unas cosas a otras es a través de las inflexiones depalabras entre formas en singular y plural.

Hay ocasiones, sobre todo para usuarios de habla hispana, en que encontrarás

situaciones donde el inflector de CakePHP no funcione como lo esperas. SiCakePHP no es capaz de reconocer tu Reloj o Ciudad, editar el archivo deinflexiones propias es la manera de indicarle a CakePHP que existen otros casosespeciales. Este archivo se encuentra en /app/config/inflections.php.

Variable deinflections.php

Descripción

$pluralRules Este arreglo contienen las expresiones regulares para pluralizar los casosespeciales. Las claves del arreglo son los patrones y los valores losreemplazos.

$uninflectedPlural Un arreglo que contiene palabras que no han de ser modificadas paraobtener su plural, como la palabra gente o dinero.

$irregularPlural Un arreglo que contiene palabras y su respectivo plural. Las claves de estearreglo contienen la forma singular y los valores la forma plural. Estearreglo debe ser utilizado para colocar palabras que no sigan las reglas

Page 13: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 13/20

 

definidas en $pluralRules.

$singularRules Igual que $pluralRules, solo que contiene las reglas para singularizar 

 palabras.$uninflectedSingular Igual que $uninflectedPlural, solo que este arreglo contiene las palabras

que no tienen singular. Por defecto es igual que $uninflectedPlural.

$irregularSingular Igual que $irregularPlural, solo que con palabras en forma singular.

Controladores

Un controlador (Controller) se usa para manejar la lógica de cierta sección de su

aplicación. Comúnmente, los controladores (Controllers) son usados para manejar la lógica de un solo modelo (Model). Los controladores pueden tener cualquier cantidad de métodos a los que normalmente se les llama acciones.

El App Controller 

Como se comentó en la introducción, la clase AppController es la clase superior atodos los controladores de tu aplicación. AppController extiende la clase Controller incluida en la libreria base de CakePHP.

Las propiedades y métodos creados en tu AppController estarán disponibles para

todos los controladores de tu aplicación. Es el sitio ideal para poner el código queserá común a todos los controladores de tu aplicación.

CakePHP combina las siguientes variables de AppController con loscontroladores de tu aplicación:

• $components• $helpers• $uses

El Pages Controller 

El núcleo de CakePHP viene con un controlador por defecto llamado the PagesController  (el Controlador de Páginas) (cake/libs/controller/pages_controller.php).La página de inicio que ves luego de la instalación, es generada utilizando estecontrolador.

Page 14: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 14/20

 

Por ejemplo: Sí se crea un archivo de vista app/views/pages/about_us.ctp sepuede accesar a él utilizando la url http://example.com/pages/about_us

Atributos del Controlador 

$nameLos usuarios de PHP4 deberían empezar la definición de sus controladores con elatributo $name. Este atributo debería ser asignado con el nombre del controlador.Usualmente este es simplemente el plural del modelo principal al que elcontrolador está asociado. Esto previene algunos problemas de distinción demayúsculas que tiene PHP4 para los nombres de las clases.

Ejemplo:<?php

class RecetasController extends AppController {var $name = 'Recetas';}?>

$components, $helpers y $uses

Los siguientes atributos más comunmente utilizados del controlador indican aCakePHP qué ayudantes (helpers), componentes (components), y modelos(models) utilizarás en conjunción con el controlador actual.

Atributos Relacionados con la Página: "$layout" y "$pageTitle"

Existen unos pocos atributos en los controladores de CakePHP que te dan controlsobre cómo se colocan tus vistas (views) dentro del diseño (layout ).

El Atributo de Parámetros ("$params")

Los parámetros del controlador están disponibles en $this->params en tucontrolador de CakePHP. Esta variables es usada para proporcionar acceso a lainformación sobre la petición actual. El uso más común de $this->params esobtener acceso a información que ha sido entregada al controlador a través de lasoperaciones POST o GET.

form

$this->params['form']Cualquier dato POST de cualquier formulario se almacena aquí, incluyendoinformación también hallada en $_FILES.

Admin

$this->params['admin']

Page 15: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 15/20

 

Contiene el valor 1 si la acción (action) actual fue invocada mediante enrutamiento"admin".

bare$this->params['bare']

Almacena un 1 si el diseño (layout ) actual está vacío; 0 si no.

isAjax

$this->params['ajax']

Almacena un 1 si la petición actual es una llamada ajax; 0 si no. Esta variablessólo se establece si el componente RequestHandler es usado en el controlador.

controller 

$this->params['controller']

Almacena el nombre del controlador actual que está sirviendo la petición. Por ejemplo, si fue pedida la URL /posts/view/1, $this->params['controller'] será igual a"posts".

• Action• Pass• url• data• prefix• named• persistModel

Métodos del Controlador 

Interactuando con Vistas

Set : El método set() es la principal manera de enviar datos desde tu controlador a tuvista (view). Una vez que has utilizado set(), la variable puede ser accedida en tu vista.set(string $variable, mixed $valor)

render: El método render() es llamado automáticamente al final de cada acciónde controlador pedida. Este método lleva a cabo toda la lógica de la vista (usando

los datos que has proporcionado con el método set()), coloca la vista (view ) dentrode su diseño (layout ) y lo sirve de vuelta al usuario final.

render(string $action, string $layout, string $file)

Control de Flujo

Page 16: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 16/20

 

Redirect: El método de control de flujo que más frecuentemente utilizarás esredirect(). Este método toma su primer parámetro en forma de URL relativa deCakePHP. Por ejemplo, cuando un usuario ha hecho un pedido

satisfactoriamente, probablemente desearás redirigirle a una ventana de recibo.redirect(string $url, integer $status, boolean $exit)

flash: Igualmente, el método flash() es usado para redirigir un usuario a unanueva página tras una operación. El método flash() es diferente en cuanto quemuestra un mensaje antes de enviar al usuario a otra URL.

flash(string $message, string $url, integer $pause)

Retrollamadas o Callback: Los controladores de CakePHP vienen con

retrollamas (callbacks) empotradas que puedes usar para insertar lógica justoantes o después de que las acciones del controlador sean llevadas a cabo.

• beforeFilter()

• beforeRender()

• afterFilter()

• afterRender()

postConditions: Usa este método para convertir un conjunto de datos demodelo recibidor mediante POST (de inputs compatibles con HtmlHelper) en un

conjunto de condiciones de búsqueda para un modelo.

Pagínate: Este método es usado para paginar resultados cargados por tusmodelos. Puedes especificar tamaño de páginas, condiciones de búsqueda delmodelo y más. Mira la sección paginación para más detalles sobre cómo usar paginate.

requestAction: Esta función llama a una acción de un controlador de cualquier lugar y devuelve los datos de la acción. La dirección $url pasada es una URLrelativa de CakePHP (/nombrecontrolador/nombreaccion/parametros). Para pasar datos extras a la acción del controladores receptor, añádelos al array $options.

requestAction(string $url, array $opciones)

loadModel: La función loadModel es útil cuando se necesita usar un modelo queno es propiamente el modelo por defecto del controlador o uno de sus modelosasociados.loadModel(string $modelClass, mixed $id)

Page 17: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 17/20

 

ComponentesLos componentes son paquetes de lógica que son compartidos entre loscontroladores. Si tiene ganas de copiar y pegar código de un controlador a otro,debería antes considerar agrupar algunas funcionalidades en un componente.

CakePHP incluye un conjunto fantástico de componentes listos para usar paraconseguir ayuda con:

• Seguridad

• Sesiones

• Lista de control de acceso (ACL)

• Emails

• Cookies

• Autenticación

• Manejo de pedidos (Requests)

Creando Componentes a medida

Supongamos que nuestra aplicación online necesita efectuar una complejaoperación matemática en muchas partes de la aplicación. Creariamos uncomponente que albergara esa lógica compartida para poder ser usada endiferentes controladores

El primer paso es crear una nueva clase y fichero de componente. Crea el fichero

en /app/controllers/components/math.php.

Añadiendo Componentes a tus Controladores

Una vez finalizado nuestro componente, podemos usarlo en los controladores dela aplicación añadiendo su nombre (excepto la parte "Component " al array$components del controlador.

Acceso a clases MVC dentro de componentes

Para acceder a la instancia del controlador desde tu recien creado componente,

necesitarás implementar el método initialize() o el startup(). Estos métodosespeciales llevan una referencia al controlador como primer parámetro y sonllamados automáticamente. El método initialize() es llamado antes del métodobeforeFilter(), y el método startup() después del método beforeFilter . Si por algún

Page 18: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 18/20

 

motivo no deseas que el método startup() sea llamado cuando el controlador estáinicializando cosas, dale el valor true a la variable $disableStartup.

Si deseas insertar algún código de lógica antes de que el controlador beforeFilter() sea llamado, necesitarás usar el método initialize() del componente.

Usando Componentes en tu Componente

A veces uno de tus componentes puede depender de otro. Si las funcionalidadesque estos componentes proveen no están relacionados, excepto por sudependencia el uno del otro, entonces no querrás ponerlos dentro de un solocomponente.

En cambio puedes hacer que tu componente sea un "Padre" e indicarle con elarray $components la lista de sus "Hijos". Los componentes padres se carganantes que sus componentes hijos, y cada componente hijo tiene acceso a supadre.

Ejemplo:

<?phpclass PadreComponent extends Object {var $name = "Padre";var $components = array( "Hijo" );function initialize(&$controller) {$this->Hijo->foo();}

function bar() {// ...} }

Modelos

Un Modelo representa tu modelo de datos y, en programación orientada a objetos,es un objeto que representa una "cosa", como un coche, una persona, o unacasa. Un blog, por ejemplo, puede contener varios artículos ( posts) y cada artículopuede contener varios comentarios. Los objetos Blog, Artículo (Post ) yComentario son ejemplos de modelos, cada uno asociado con el otro.

<?phpclass Ingredient extends AppModel {var $name = 'Ingredient';}?>

Page 19: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 19/20

 

Simplemente con esta declaración, se le otorga al modelo Ingredient  toda lafuncionalidad que necesitarás para crear consultas junto con guardado y borradode datos. Estos métodos mágicos provienen del modelo de herencia de

CakePHP. El modelo Ingredient extiende el modelo de aplicaciónm AppModel , elcual extiende la clase Model , interna de CakePHP. Es esta clase Model interna laque otorga la funcionalidad a nuestro modelo pesonalizado, Ingredient .

La clase intermedia AppModel está vacía y reside por defecto dentro de la carpeta/cake/. Redefinir  AppModel  te permitirá definir funcionalidad que debería estar disponible a todos los modelos dentro de tu aplicación. Para hacer eso, necesitascrear tu propio fichero app_model.php que reside en la raíz de la carpeta /app/.Creando un proyecto utilizando Bake,  Bake generará automáticamente estefichero por ti.

Crea tu fichero modelo en PHP en el directorio /app/models/ o en un subdirectorio

de /app/models/. CakePHP lo encontrará en cualquier lugar en el directorio. Por convención, debería tener el mismo nombre que la clase; para este ejemplo,ingredient.php.

CakePHP creará dinamicamente un objeto modelo por ti si no puede encontrar unarchivo correspondiente en /app/models. Esto también significa que si,accidentalmente, nombras tu archivo de manera errónea (p.ej. Ingredient.php oingredients.php) CakePHP utilizará  AppModel  en lugar de tu archivo de modelocon nombre incorrecto. Si estás tratando de utilizar un método de un modelopersonalizado y estás obteniendo errores SQL, normalmente es porque CakePHPno puede encontrar tu modelo.

La propiedad $name es necesaria para PHP4 pero opcional para PHP5.

Creando Tablas de Bases de Datos

A pesar de que CakePHP puede tener orígenes de datos (datasources) que noson manejadas por sistemas de gestión de bases de datos, la mayoría de lasveces lo son. CakePHP está diseñado para ser agnóstico y funcionará conMySQL, MSSQL, Oracle, PostgreSQL y otros. Puedes crear tus tablas de base dedatos como lo harías normalmente. Cuando creas tus clases del Modelo,automáticamente se mapean a las tablas que has creado.

Los nombres de las tablas son, por convención, en minúsculas y en plural, con las

palabras de los nombres de tablas de varias palabras separadas por guiones desubrayado (_). Por ejemplo, un nombre de Modelo de Ingredient espera el nombrede tabla ingredients. un nombre de Modelo de EventRegistration debería esperar un nombre de tabla event_registrations. CakePHP inspeccionará tus tablas paradeterminar el tipo de dato de cada campo y utiliza esta información apra

Page 20: 27613468 FrameWork Cake PHP

5/10/2018 27613468 FrameWork Cake PHP - slidepdf.com

http://slidepdf.com/reader/full/27613468-framework-cake-php 20/20

 

automatizar varias características como la salida de campos de formulario en lavista.

Conclusion

Cake php es un Framework de código abierto el cual es muy flexible a loscambios y muy útil como herramientas para diseñar aplicaciones web. Se empleamediate el lenguaje php ya sea el 4 o php 5. Necesita de un servidor como iss oapache para implementar las aplicaciones. Es muy recomendable utilizarlo por sufacilidad de aprendizaje aunque lleva su cantidad de esfuerzo y dedicación. Lasposibilidades que ofrece son variadas y muy eficientes.


Top Related