Beruflich Dokumente
Kultur Dokumente
CakePHP es un marco de desarrollo [framework] rpido para PHP, libre, de cdigo abierto. Se trata de una estructura que sirve de base a los programadores para que stos puedan crear aplicaciones Web. Nuestro principal objetivo es que puedas trabajar de forma estructurada y rpida, sin prdida de flexibilidad.
Con CakePHP el desarrollo web ya no es montono porque ofrecemos las herramientas para que empieces a escribir el cdigo que realmente necesitas: la lgica especfica de tu aplicacin. Consigue una copia de CakePHP, empieza con lo verdaderamente importante y no reinventes la rueda cada vez que te incorpores a un nuevo proyecto.
CakePHP tiene un equipo de desarrolladores y una comunidad activos, lo que aade valor al proyecto. Con CakePHP, adems de no tener que reinventar la rueda, el ncleo de tu aplicacin se mejora constantemente y est bien probado.
Esta es una lista breve con las caractersticas de las que disfrutars al utilizar CakePHP:
Comunidad activa y amistosa Licencia flexible Compatible con PHP4 y PHP5 CRUD integrado para la interaccin con la base de datos Soporte de aplicacin [scaffolding] Generacin de cdigo Arquitectura Modelo Vista Controlador (MVC) Despachador de peticiones [dispatcher], con URLs y rutas personalizadas y limpias Validacin integrada Plantillas rpidas y flexibles (sintaxis de PHP, con ayudantes[helpers]) Ayudantes para AJAX, Javascript, formularios HTML y ms Componentes de Email, Cookie, Seguridad, Sesin y Manejo de solicitudes Listas de control de acceso flexibles Limpieza de datos Cach flexible Localizacin Funciona en cualquier subdirectorio del sitio web, con poca o ninguna configuracin de Apache
La figura 1 muestra un ejemplo sencillo de una peticin [request] MVC en CakePHP. A efectos ilustrativos, supongamos que un usuario llamado Ricardo acaba de hacer clic en el enlace "Comprar un pastel personalizado ahora!" de la pgina inicial de la aplicacin.
1.
Ricardo hace clic en el enlace apuntando a http://www.ejemplo.com/pasteles/comprar, y su navegador hace una peticin al servidor web.
2.
3. 4.
El controlador realiza lgica de aplicacin especfica. Por ejemplo, puede comprobar si Ricardo ha iniciado sesin. El controlador tambin utiliza modelos para acceder a los datos de la aplicacin. La mayora de las veces los modelos representan tablas de una base de datos, aunque tambin pueden representar entradas LDAP, canales RSS, o ficheros en el sistema. En este ejemplo, el controlador utiliza un modelo para buscar la ltima compra de Ricardo en la base de datos.
5.
Una vez que el controlador ha hecho su magia en los datos, se los pasa a la vista. La vista toma los datos y los deja listos para su presentacin al usuario. La mayora de las veces las vistas en CakePHP vienen en formato HTML, pero una vista puede ser fcilmente un PDF, un documento XML, o un objeto JSON, dependiendo de tus necesidades.
6.
Una vez que el objeto encargado de procesar vistas en CakePHP ha utilizado los datos del controlador para construir una vista completa, el contenido se devuelve al navegador de Ricardo.
Casi todas las peticiones a tu aplicacin seguirn este patrn bsico. Ms adelante, vamos a completar algunos detalles especficos de Cake, as que, por favor, ten esto en cuenta a medida que avanzamos.
Beneficios
Por qu utilizar MVC? Porque es un patrn de diseo de software probado y se sabe que funciona. Con MVC la aplicacin se puede desarrollar rpidamente, de forma modular y mantenible. Separar las funciones de la aplicacin en modelos, vistas y controladores hace que la aplicacin sea muy ligera. Estas caractersticas nuevas se aaden fcilmente y las antiguas toman automticamente una forma nueva.
El diseo modular permite a los diseadores y a los desarrolladores trabajar conjuntamente, as como realizar rpidamente el prototipado. Esta separacin tambin permite hacer cambios en una parte de la aplicacin sin que las dems se vean afectadas.
Aunque lleva algn tiempo acostumbrarse a construir aplicaciones as, estamos seguros de que, una vez construyas tu primera aplicacin con CakePHP, no querrs volver a hacerlo de otra forma.
El framework tambin proporciona una estructura de organizacin bsica, desde los nombres de los archivos hasta los de las tablas de la base de datos, manteniendo toda tu aplicacin consistente y lgica. Este aspecto es simple pero poderoso. Sigue las convenciones y siempre sabrs exactamente dnde estn las cosas y cmo estn organizadas.
Figura 2. Peticin tpica de Cake. Negro = elemento requerido, Gris = elemento opcional, Azul = callback Ricardo hace clic en el enlace apuntando a http://www.ejemplo.com/tortas/comprar, y su navegador hace una peticin a su servidor Web. El enrutador analiza la URL para extraer los parmetros para esta peticin: el controlador, la accin, y cualquier otro argumento(s) que pueda afectar a la lgica de negocio durante esta peticin. Usando las rutas, una peticin URL es mapeada a una accin de controlador (un mtodo en una clase de controlador especfica). En este caso, es el mtodo comprar() del controlador PastelesController. El callback beforeFilter() del controlador es llamado antes de que cualquier accin lgica del controlador sea ejecutada. El controlador puede usar modelos para ganar acceso a los datos de la aplicacin. En este ejemplo, el controlador usa un modelo para obtener informacin de la base de datos de las ltimas compras de Ricardo. Cualquier callback de modelo, comportamiento [behavior], y orgenes de datos [DataSources] aplicables pueden activarse durante esta operacin. Mientras que el uso del modelo no es requerido, todos los controladores de CakePHP inicialmente requieren al menos un modelo, salvo que el desarrollador indique lo contrario. Despus que el modelo ha obtenido toda la informacin, sta es devuelta al controlador. Pueden activarse callbacks del modelo. El controlador puede usar componentes para refinar aun ms los datos o realizar otras operaciones (manipulacin de sesiones, autenticacin, o envos de email, por ejemplo). Una vez que el controlador ha usado modelos y componentes para preparar suficientemente la informacin, sta es entregada a la vista usando el mtodo set() del controlador. Los callbacks de controlador pueden ser aplicados antes de que la informacin sea enviada. La lgica de vista es ejecutada, la cual puede incluir el uso de elementos y/o ayudantes [helpers]. Por defecto, la vista es creada dentro del diseo [layout]. Callbacks del controlador adicionales (como afterFilter) pueden ser aplicados. El cdigo completo creado por la vista es enviado al navegador de Ricardo.
La Carpeta App
La carpeta app de CakePHP es donde realizars la mayor parte del desarrollo de tu aplicacin. Vemos un poco ms de cerca las carpetas dentro de app. config Contiene los (pocos) archivos de configuracin que usa CakePHP. Detalles de conexin a bases de datos, arranque (bootstrapping), archivos de configuracin del ncleo y dems deberan ser almacenados aqu.
controllers Contiene los controladores de tu aplicacin y sus componentes. locale models plugins Almacena archivos de cadenas de texto para la internacionalizacin. Contiene los modelos de tu aplicacin, comportamientos (behaviors) y orgenes de datos (datasources). Contiene los paquetes de plugins.
tmp
Aqu es donde CakePHP almacena datos temporales. La informacin que realmente se almacena depende de cmo hayas configurado CakePHP, pero normalmente esta carpeta es usada para almacenar descripciones de modelos, registros (logs) y algunas veces informacin de sesiones. Asegrate de que esta carpeta existe y tiene permisos de escritura, ya que de lo contrario el rendimiento de tu aplicacin se ver muy afectado. En modo debug CakePHP te avisar si este no es el caso. Cualesquiera clases o libreras de terceros deberan ser ubicadas aqu. Hacerlo as hace que sea ms fcil de acceder a ellas usando la funcin App::Import('vendor','nombre'). Los observadores meticulosos notarn que esto parece redundante, ya que tambin existe una carpeta vendors en el nivel superior de nuestra estructura de directorios. Veremos las diferencias entre las dos cuando discutamos acerca de la administracin de mltiples aplicaciones y configuraciones de sistemas ms complejos. Los archivos de presentacin son ubicados aqu: elementos (elements), pginas de error, ayudantes (helpers), layouts y archivos de vistas. En una configuracin de produccin, esta carpeta debera servir como la raz del sitio (document root) para tu aplicacin. Las carpetas aqu tambin sirven como lugares de almacenamiento para hojas de estilo en cascada (CSS stylesheets), imgenes y archivos JavaScript.
vendors
views
webroot
<?php class NoticiasController extends AppController { function ultimas() { $this->_buscaNuevosArticulos(); } function _buscaNuevosArticulos() { //Lgica para encontrar los nuevos articulos. } } ?>
Mientras que la pgina http://www.example.com/noticias/ultimas/ est accesible de manera normal, si alguien intenta acceder a la pgina http://www.example.com/noticias/_buscaNuevosArticulos/ obtendr un error porque el nombre del mtodo est precedido por un guin bajo.
Plantilla de Vista, encontrada en /app/views/people/index.ctp Usando estas convenciones, CakePHP entiende que la peticion http://example.com/people/ apunta a la llamada de funcion index() en el controlador , PeopleController, donde el modelo Person esta disponible automaticamente (y apunta automaticamente a la tabla people en la base de datos), y se renderiza en el archivo. Ninguna de estas relaciones han sido configuradas por otra razon que crear clases y archivos que usted necesita crear. Ahora que usted ya se ha involucrado con los fundamentos de CakePHP, puede revisar el tutorial para realizar un Blog en CakePHP, que se encuentra al final de este manual.
3.5 Controladores
Introduccin
Un controlador (Controller) se usa para manejar la lgica de cierta seccin de su aplicacin. Comnmente, los controladores (Controllers) son usados para manejar la lgica de un solo modelo (Model). Por ejemplo, si ests construyendo un sitio de una pastelera, podras tener un RecetasController y un IngredientesController para manejar las recetas y sus ingredientes. En CakePHP, los controladores se nombran segn el modelo que manejan, y se ponen siempre en plural. El modelo Receta es manejado por el RecetasController, el modelo Producto es manejado por el ProductosController, y as sucesivamente. Los controladores de su aplicacin son sub-clases de la clase AppController de CakePHP, que a su vez extiende la clase principal Controller. La clase AppController puede ser definida en /app/app_controller.php y debe contener mtodos que son compartidos entre todos los controladores de su aplicacin. AppController es una sub-clase de Controller que es una clase de la biblioteca estndar de Cake. Los controladores pueden tener cualquier cantidad de mtodos a los que normalmente se les llama acciones. Las acciones son mtodos de controladores en tu aplicacin web para mostrar vistas. Una accin es un nico mtodo de un controlador. El Dispatcher de CakePHP ejecuta acciones cuando una solicitud entrante contiene en su URL el nombre de una accin del controlador. El controlador estara ubicado en /app/controllers/recetas_controller.php con el siguiente contenido: Copy to Clipboard
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
<?php # /app/controllers/recetas_controller.php class RecetasController extends AppController { function ver($id) { //la lgica de la accin va aqui... } function compartir($cliente_id, $receta_id) { //la lgica de la accin va aqui... } function buscar($query) { //la lgica de la accin va aqui... } } ?>
Para que puedas usar un controlador de manera productiva en tu propia aplicacin, repasaremos algunos de los atributos y mtodos provistos por los controladores de CakePHP.
Las propiedades y mtodos creados en tu AppController estarn disponibles para todos los controladores de tu aplicacin. Es el sitio ideal para poner el cdigo que ser comn a todos los controladpres de tu aplicacin. Los Componentes (los cuales veremos despus) son lo ms utilizado para el cdigo que se utiliza en la mayora (pero no necesariamente en todos) los controladores Cuando se aplica la herencia a los objetos, CakePHP tambin realiza un trabajo extra cuando existen atributos especiales en el controlador, como una lista de componentes o ayudantes utilizados por un controlador. En estos casos, los arrays del AppControler son combinados con los arrays de la clase hijo CakePHP combina las siguientes variables de AppController con los controladores de tu aplicacin:
$components $helpers $uses Por favor, recuerda realizar las llamadas a los callbacks de AppController desde los controladores de tu aplicacin para que todo funcione correctamente: Copy to Clipboard
1. 2. 3.