SlideShare a Scribd company logo
1 of 30
Download to read offline
PROGRAMACIÓN DE APLICACIÓNS
   CO FRAMEWORK CAKEPHP
       Toni Martínez Carballo -
            http://ousli.org
INDICE
1.INTRODUCCIÓN
2.INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
3.MVC
4.CONVENCIÓNS DE CAKE
5.MODELO
6.CONTROLADOR
7.VISTA
8.BIBLIOGRAFÍA
1. INTRODUCCIÓN
    Arquitectura MVC (Modelo­Vista­Controlador).
●



    Integración de CRUD (Acrónimo de Create Read Update Delete). Esto permitiranos 
●


    facer consultas coa base de datos de forma sinxela, abstraéndonos en moitos 
    casos do uso de SQL.
    Uso de URL amigables para os buscadores, ademais de poder personalizalas o 
●


    noso gusto.
    Application Scaffolding
●



    Validación de formularios integrada
●



    Sistema de templates doado e rápido
●



    Sistema ACL propio.
●



    Limpeza de Datos, moi útil para liberar dos datos enviados polos usuarios de 
●


    ataques ou datos non desexados.
    Flexible sistema de Cache.
●
1. INTRODUCCIÓN

Cake php ademais conta con outras características, 
non tan técnicas, que fan deste framework unha 
solución para ter moi en conta o planificar o 
desenvolvemento dunha aplicación web.


    Comunidade activa e amigable.
●



    Licencia Flexible ­­> MIT License
●



    Compatible con PHP 4 e PHP 5
●
2. INSTALACIÓN E CONFIGURACIÓN DE 
                    CAKEPHP
                                                      Requisitos
Antes de empezar a instalación debemos comprobar os 
requerimentos básicos para o uso do framework. Os seus 
requerementos son:
    Un servidor HTTP, como apache (non provei en outro), que 
●


    teña habilitado as sesións e o módulo mod_rewrite.
    PHP en verisións superioriores a 4.3.2 se se trata de php4, en 
●


    php5 tamé funciona perfectamente.
    Unha base de datos. Cake soporta MySQL e PostgreSQL 
●


    aínda que pode funcionar con máis cun wraper para ADODB.
2. INSTALACIÓN E CONFIGURACIÓN DE 
                     CAKEPHP
                            ¡Vamos coa Instalación!
    DESCARGAR CAKE PHP
●



    Cakephp ten neste intre dous brazos de desenvolvemento:
        1.1.x.x ­­­> Actualmente 1.1.4797
    –

        1.2.x.x ­­> Aínda ¡Inestable!
    –

    Descargamos cakephp da súa web http://cakephp.org en concreto de 
      http://cakeforge.org/projects/cakephp/
    DESCOMPRIMIR    tar xvfz cake_1.1.13.4797.tar.gz
●
2. INSTALACIÓN E CONFIGURACIÓN DE 
               CAKEPHP


PARA A INSTALACIÓN  TEMOS TRES OPCIÓNS


     INSTALACIÓN PARA DESENVOLVEMENTO (¡Rápida!)
 –



     CONFIGURACIÓN DE PRODUCCIÓN
 –



     CONFIGURACIÓN AVANZADA
 –
2. INSTALACIÓN E CONFIGURACIÓN DE 
                    CAKEPHP
                        INSTALACIÓN PARA DESENVOLVEMENTO
Simplemente consiste en copiar os ficheiros de cakephp nuna carpeta dentro 
do noso DocumentRoot, neste caso o noso DocumentRoot será /var/www/ polo 
que podemos copiar o contido da descompresión anterior no ake en 
/var/www/cake/ e deste modo facendo un http://localhost/cake/ xa podemos 
acceeder a nosa instalación.
     <Directory "/var/www/cake3/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order allow,Deny
        Allow from all
     </Directory>

¡PERO! mod_rewrite instalado e con AllowOverride All para ó directorio 
2. INSTALACIÓN E CONFIGURACIÓN DE 
                CAKEPHP
             INSTALACIÓN PARA DESENVOLVEMENTO
¿FUNCIONA?
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
                                      INSTALACIÓN DE PRODUCCIÓN
    Esta configuración, poderíamos dicir que é unha adaptación da
●

    anterior pero para unha web en producción, é dicir, nun dominio de
    internet no que tan só funcione esa web.
    mod_rewrite instalado e con AllowOverride All para ó directorio 
●



    Para que sexa nun dominio concreto, configuraremos un VirtualHost
●


<VirtualHost *>
        ServerName charlacake.net
        DocumentRoot /var/www/cake3/app/webroot/
        <Directory "/var/www/cake3/app/webroot/">
                        Options Indexes MultiViews FollowSymLinks
                        AllowOverride All
                        Order allow,Deny
                        Allow from all
        </Directory>
</VirtualHost>
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
                                     CONFIGURACIÓN AVANZADA
A configuración avanzada consiste en que tódolas webs que empregen
cake e que teñamos no noso servidor, empregen a mesma librería de
cake para que non teña que ser incluida en cada unha das webs.
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP

                                       CONFIGURACIÓN A BASE DE DATOS
    Temos que crear unha base de datos e darlle acceso a un usuario a ela.
●



    As opcións de configuración están en cake/app/config/database.php
●



    Este ficheiro o creamos a partir do que trae cake de exemplo e que se
●

    chama cake/app/config/databas.php.default


var $default = array('driver' => 'mysql',                             
                     'connect' => 'mysql_connect',
                     'host' => 'localhost',
                     'login' => 'inestable',
                     'password' => 'inestable',
                     'database' => 'xestion',
                     'prefix' => '');
2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP
                                                  CONFIGURACIÓN AVANZADA
Por exemplo, poderíamos facer a seguinte instalación:
    /usr/lib/cake -----> Aquí gardaríamos a librería de cake.
●



    /home/toni/miweb ---> Aquí gardaríamos os php da nosa aplicación.
●



    /var/www/toniblog ---> Aquí gardaríamos o webroot (ese directorio indícase
●

    no DocumentRoot de apache).
Inicializamos as constantes no index.php do noso DocumentRoot
if (!defined('ROOT'))
{
   define('ROOT', DS.'home'.DS.'toni');
}
if (!defined('APP_DIR'))
{
   define ('APP_DIR', 'miweb');
}
if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
   define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib');
}
3.MVC
4. CONVENCIÓNS DE CAKE

    Nome dos modelos: <nome_singular_obxeto>, coa primeira letra en 
●


    maiúscula. Por exemplo o modelo que reflexa a entidade count é 
    Count. O nome do ficheiro php que codifica o modelo ten o seu 
    mesmo nome pero en minúsculas, ex: count.php
    Nome dos controladores: <nome_plural_modelo>Controller Por 
●


    exemplo CountsController e o seu ficheiro sería en minúsculas e 
    unha barra baixa para separar as verbas: counts_controller.php
    Nome das vistas: <nome_da_acción> Por exemplo: add.thtml
●



    Claves foráneas: <nome_modelo_singular_id> Por exemplo en a 
●


    clave foranea de Count en Transaction é count_id.
    Nome das táboas: <nome_modelo_plural>, en minúsculas. Por 
●


    exemplo a táboa de Count é counts
5. MODELO
¡IMPLEMENTAREMOS
ESTA APLICACIÓN!


Faremos un exemplo en 
¡vivo! dunha simple 
aplicación que xestione a 
contabilidade (a moi menor 
escala) dunha entidade
5. MODELO
                                           ASOCIACIÓNS ENTRE MODELOS


Un dos puntos principais que proporciona cake que é as asociacións 
existentes entre modelos que nos permitirán reflexar as relacións entre 
táboas. As relacións existentes son:
     hasOne: Utilizada para indicar unha relación de 1 a 1.
 ●



     hasMany: Utilizada para indicar unha relación de 1 a N.
 ●



     belongsTo: Utilizada para indicar unha relación de N a 1.
 ●



     hasAndBelongsToMany: Utilizada para indicar unha relación de N a N.
 ●
5. MODELO
                                                     VARIABLES DO MODELO
    $primaryKey
●



    $recursive
●



         $recursive = 0 (Cake colle os datos da táboa)
     –

         $recursive = 1 (Cake colle os datos da taboa e os dos seus asociados)
     –

         $recursive = 2 (Cake colle os datos da taboa, os dos seus asociados e 
     –
         os dos asociados dos seus asociados)
    $transactional
●



    $useTable
●



    $useDbConfig
●
5. MODELO
                                                               VARIABLES DO MODELO
        $validate
    ●
                          var $validate = array(
                              'count_id' => VALID_NOT_EMPTY,
                              'name' => VALID_NOT_EMPTY,
                              'amount' => VALID_NUMBER,
                              'date' => VALID_NOT_EMPTY,
                              'user_id' => VALID_NOT_EMPTY,
                          );

            VALID_NOT_EMPTY 
        ●



            VALID_NUMBER 
        ●



            VALID_EMAIL 
        ●



            VALID_YEAR 
        ●




        Predefinidas en /cake/lib/validators.php empregando expresións regulares.
●
5. MODELO
                                           FUNCIÓNS DE DATOS DO MODELO
    find ($conditions, $fields, $order, $recursive)
●



    findAll ($conditions, $fields, $order, $limit, $page, $recursive)
●



    field ($name, $conditions=null, $order=null)
●



    findAllBy<fieldName>($value)
●



    findBy<fieldName>($value)
●



    findNeighbours ($conditions, $field, $value)
●



    findCount($conditions)
●



    generateList ($conditions, $order, $limit, $keyPath, $valuePath)
●



    read ($fields, $id)
●



    query($data)
●



    execute($data)
●
5. MODELO
                                FUNCIÓNS DE CALLBACK
    beforeFind(&$queryData)
●



    afterFind($results)
●



    beforeValidate()
●



    beforeSave()
●



    afterSave()
●



    beforeDelete()
●



    afterDelete()
●
6. CONTROLADOR
    No controlador definiremos o código que se debe de executar en cada 
●


    unha das accións.
    Todos os controladores, deberemos de gardalos en /app/controllers
●



    class PostsController extends AppController
    {
        var $name = 'Posts';

        function index()
        {
        }

        function view($id)
        {
        }

        function add()
        {

        }
        
    }
6. CONTROLADOR
                                     VARIABLES DO CONTROLADOR
    $name
●



    $uses
●



    $helpers
●



         var $helpers = array('Html','Ajax','Javascript');
     –

    $layout
●



    $autoRender
●



    $beforeFilter
●



    $components
●
6. CONTROLADOR
                                  PARÁMETROS DO CONTROLADOR
    $this­>data 
●



    $this­>params['form']
●



    $this­>params['ajax']
●



    $this­>params['controller']
●



    $this­>params['action']
●



    $this­>params['pass']
●



    $this­>params['url']
●
6. CONTROLADOR
                                         FUNCIÓNS DE DATOS DO CONTROLADOR
    set($var,$value)
●



    validateErrors()
●



    validate()
●



    redirect($url)
●



    flash($message,$url,$pause)
●



    requestAction($url,$extra)
●



    log($message,$type)
●



                                                     FUNCIÓNS DE CALLBACK
    beforeFilter()
●



    afterFilter()
●



                        beforeRender()
                    ●
7. VISTA
    A vista é unha plantilla que se chama despois da acción. Estará formada 
●


    por HTML e PHP. Cake proporciona elementos que permiten a partir de 
    simples funcións xerar código HTML.
    Gárdanse en /app/views/posts/add.html
●



    Os datos que utiliza para mostralos o colle a partir do modelo o cal 
●


    inicializa unha variable (soe ser arry) mediante a funcion set().
    Layouts: Ademáis das vistas, pódense engadir plantillas. Por defecto xa 
●


    existe unha plantilla que se pode personalizar e ademáis pódense engadir 
    máis inicializando a variable $layout no modelo.
    Elements: Permite xerar bloques específicos de HTML de forma 
●


    automática. Son moi útiles en caso de listas que nos xere a partir dun 
    array.
BIBLIOGRAFÍA

    http://manual.cakephp.org
●



    http://api.cakephp.org
●



    http://cakephp.org/screencasts
●



    http://es.wikipedia.org/wiki/Modelo_Vista_Controlado
●



    http://www.mononeurona.org/index.php?idp=738
●
Licenza da ponencia
      Creative Commons Attribution­ShareAlike 2.5 License
Texto da licenza dispoñible en http://creativecommons.org/licenses/by-sa/2.5/legalcode
GRAZAS POLA ATENCIÓN
    ¿DÚBIDAS?
GRAZAS POLA ATENCIÓN
 UNHA COUSIÑA MÁIS

More Related Content

Viewers also liked

Aprendizajes sobre orquestación de proveedores en minería
Aprendizajes sobre orquestación de proveedores en mineríaAprendizajes sobre orquestación de proveedores en minería
Aprendizajes sobre orquestación de proveedores en mineríaEduardo Reyes
 
conexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassungconexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassungconexusat
 
Schopenhauer - le monde comme volonté et représentation
Schopenhauer - le monde comme volonté et représentationSchopenhauer - le monde comme volonté et représentation
Schopenhauer - le monde comme volonté et représentationanattaembe
 
Resultats prise de temps 09 07 15
Resultats prise de temps 09 07 15Resultats prise de temps 09 07 15
Resultats prise de temps 09 07 15cnrnatation
 
Développement et expérimentation d’un modèle de gestion collaborative des pra...
Développement et expérimentation d’un modèle de gestion collaborative des pra...Développement et expérimentation d’un modèle de gestion collaborative des pra...
Développement et expérimentation d’un modèle de gestion collaborative des pra...christophefeltus
 
Photographie « vie sociale Pari-T 2014 »
Photographie  « vie sociale Pari-T 2014 » Photographie  « vie sociale Pari-T 2014 »
Photographie « vie sociale Pari-T 2014 » Projet PASOS
 
Portfolio d'Architecture
Portfolio d'ArchitecturePortfolio d'Architecture
Portfolio d'ArchitectureAymen Douah
 

Viewers also liked (17)

Nueva lumix dc
Nueva lumix dcNueva lumix dc
Nueva lumix dc
 
Servei d'estrangeria. Sílvia Martínez
Servei d'estrangeria. Sílvia MartínezServei d'estrangeria. Sílvia Martínez
Servei d'estrangeria. Sílvia Martínez
 
Interrogatorio
InterrogatorioInterrogatorio
Interrogatorio
 
Glanage urbain
Glanage urbainGlanage urbain
Glanage urbain
 
L'avenir de la CRM
L'avenir de la CRML'avenir de la CRM
L'avenir de la CRM
 
Aprendizajes sobre orquestación de proveedores en minería
Aprendizajes sobre orquestación de proveedores en mineríaAprendizajes sobre orquestación de proveedores en minería
Aprendizajes sobre orquestación de proveedores en minería
 
conexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassungconexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassung
 
eduvlogging_comunitario_v04
eduvlogging_comunitario_v04eduvlogging_comunitario_v04
eduvlogging_comunitario_v04
 
Schopenhauer - le monde comme volonté et représentation
Schopenhauer - le monde comme volonté et représentationSchopenhauer - le monde comme volonté et représentation
Schopenhauer - le monde comme volonté et représentation
 
Resultats prise de temps 09 07 15
Resultats prise de temps 09 07 15Resultats prise de temps 09 07 15
Resultats prise de temps 09 07 15
 
Comunicació corporativa i @plec 2.0 ST Tarragona. Núria Vives
Comunicació corporativa i @plec 2.0 ST Tarragona. Núria VivesComunicació corporativa i @plec 2.0 ST Tarragona. Núria Vives
Comunicació corporativa i @plec 2.0 ST Tarragona. Núria Vives
 
Televisión 2.0 con Livestream
Televisión 2.0 con LivestreamTelevisión 2.0 con Livestream
Televisión 2.0 con Livestream
 
Position défensive I
Position défensive I Position défensive I
Position défensive I
 
Développement et expérimentation d’un modèle de gestion collaborative des pra...
Développement et expérimentation d’un modèle de gestion collaborative des pra...Développement et expérimentation d’un modèle de gestion collaborative des pra...
Développement et expérimentation d’un modèle de gestion collaborative des pra...
 
Taxi
TaxiTaxi
Taxi
 
Photographie « vie sociale Pari-T 2014 »
Photographie  « vie sociale Pari-T 2014 » Photographie  « vie sociale Pari-T 2014 »
Photographie « vie sociale Pari-T 2014 »
 
Portfolio d'Architecture
Portfolio d'ArchitecturePortfolio d'Architecture
Portfolio d'Architecture
 

More from ousli07

Comunidade Blogaliza
Comunidade BlogalizaComunidade Blogaliza
Comunidade Blogalizaousli07
 
Dev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos pluginsDev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos pluginsousli07
 
Perspectivas de la realidad desde los medios de comunicacion frente los medio...
Perspectivas de la realidad desde los medios de comunicacion frente los medio...Perspectivas de la realidad desde los medios de comunicacion frente los medio...
Perspectivas de la realidad desde los medios de comunicacion frente los medio...ousli07
 
Directrices migratorias
Directrices migratoriasDirectrices migratorias
Directrices migratoriasousli07
 
Aplicación docente del software libre
Aplicación docente del software libreAplicación docente del software libre
Aplicación docente del software libreousli07
 
Webs Dinámicas, web nos centros educativos baseadas en Software Libre
Webs Dinámicas, web nos centros educativos baseadas en Software LibreWebs Dinámicas, web nos centros educativos baseadas en Software Libre
Webs Dinámicas, web nos centros educativos baseadas en Software Libreousli07
 
O software libre para a xestión da rede educativa máis grande do mundo
O software libre para a xestión da rede educativa máis grande do mundoO software libre para a xestión da rede educativa máis grande do mundo
O software libre para a xestión da rede educativa máis grande do mundoousli07
 
Iniciativa EducaMadrid - MadridLinux.
Iniciativa EducaMadrid - MadridLinux.Iniciativa EducaMadrid - MadridLinux.
Iniciativa EducaMadrid - MadridLinux.ousli07
 
Software Libre e terminais lixeiros en aulas: TCOS
Software Libre e terminais lixeiros en aulas: TCOSSoftware Libre e terminais lixeiros en aulas: TCOS
Software Libre e terminais lixeiros en aulas: TCOSousli07
 
Impulso al Software Libre desde la Junta de Andalucia
Impulso al Software Libre desde la Junta de AndaluciaImpulso al Software Libre desde la Junta de Andalucia
Impulso al Software Libre desde la Junta de Andaluciaousli07
 
Formando ao futuro profesional en Software Libre
Formando ao futuro profesional en Software LibreFormando ao futuro profesional en Software Libre
Formando ao futuro profesional en Software Libreousli07
 
Forja Universitaria de RedIRIS
Forja Universitaria de RedIRISForja Universitaria de RedIRIS
Forja Universitaria de RedIRISousli07
 
A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensino
 A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensino A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensino
A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensinoousli07
 
Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...
Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...
Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...ousli07
 
Aula Cesga, un campus virtual basado en Software Libre
Aula Cesga, un campus virtual basado en Software LibreAula Cesga, un campus virtual basado en Software Libre
Aula Cesga, un campus virtual basado en Software Libreousli07
 
Presentacion Rede DSI
Presentacion Rede DSIPresentacion Rede DSI
Presentacion Rede DSIousli07
 
Docencia Redes con Open Source
Docencia Redes con Open SourceDocencia Redes con Open Source
Docencia Redes con Open Sourceousli07
 
Sistema y soporte informático en un centro educativo basado en software libre
Sistema y soporte informático en un centro educativo basado en software libreSistema y soporte informático en un centro educativo basado en software libre
Sistema y soporte informático en un centro educativo basado en software libreousli07
 
Acercamiento al Software Libre
Acercamiento al Software LibreAcercamiento al Software Libre
Acercamiento al Software Libreousli07
 

More from ousli07 (20)

Comunidade Blogaliza
Comunidade BlogalizaComunidade Blogaliza
Comunidade Blogaliza
 
Dev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos pluginsDev con Joomla componentes modulos plugins
Dev con Joomla componentes modulos plugins
 
Perspectivas de la realidad desde los medios de comunicacion frente los medio...
Perspectivas de la realidad desde los medios de comunicacion frente los medio...Perspectivas de la realidad desde los medios de comunicacion frente los medio...
Perspectivas de la realidad desde los medios de comunicacion frente los medio...
 
Directrices migratorias
Directrices migratoriasDirectrices migratorias
Directrices migratorias
 
Aplicación docente del software libre
Aplicación docente del software libreAplicación docente del software libre
Aplicación docente del software libre
 
Webs Dinámicas, web nos centros educativos baseadas en Software Libre
Webs Dinámicas, web nos centros educativos baseadas en Software LibreWebs Dinámicas, web nos centros educativos baseadas en Software Libre
Webs Dinámicas, web nos centros educativos baseadas en Software Libre
 
O software libre para a xestión da rede educativa máis grande do mundo
O software libre para a xestión da rede educativa máis grande do mundoO software libre para a xestión da rede educativa máis grande do mundo
O software libre para a xestión da rede educativa máis grande do mundo
 
Iniciativa EducaMadrid - MadridLinux.
Iniciativa EducaMadrid - MadridLinux.Iniciativa EducaMadrid - MadridLinux.
Iniciativa EducaMadrid - MadridLinux.
 
Magasi
MagasiMagasi
Magasi
 
Software Libre e terminais lixeiros en aulas: TCOS
Software Libre e terminais lixeiros en aulas: TCOSSoftware Libre e terminais lixeiros en aulas: TCOS
Software Libre e terminais lixeiros en aulas: TCOS
 
Impulso al Software Libre desde la Junta de Andalucia
Impulso al Software Libre desde la Junta de AndaluciaImpulso al Software Libre desde la Junta de Andalucia
Impulso al Software Libre desde la Junta de Andalucia
 
Formando ao futuro profesional en Software Libre
Formando ao futuro profesional en Software LibreFormando ao futuro profesional en Software Libre
Formando ao futuro profesional en Software Libre
 
Forja Universitaria de RedIRIS
Forja Universitaria de RedIRISForja Universitaria de RedIRIS
Forja Universitaria de RedIRIS
 
A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensino
 A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensino A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensino
A Galipedia, libre e colaborativa, tamén para a aprendizaxe e o ensino
 
Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...
Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...
Software Libre e accesibilidade ás novas tecnoloxías, posibilitando a ensinan...
 
Aula Cesga, un campus virtual basado en Software Libre
Aula Cesga, un campus virtual basado en Software LibreAula Cesga, un campus virtual basado en Software Libre
Aula Cesga, un campus virtual basado en Software Libre
 
Presentacion Rede DSI
Presentacion Rede DSIPresentacion Rede DSI
Presentacion Rede DSI
 
Docencia Redes con Open Source
Docencia Redes con Open SourceDocencia Redes con Open Source
Docencia Redes con Open Source
 
Sistema y soporte informático en un centro educativo basado en software libre
Sistema y soporte informático en un centro educativo basado en software libreSistema y soporte informático en un centro educativo basado en software libre
Sistema y soporte informático en un centro educativo basado en software libre
 
Acercamiento al Software Libre
Acercamiento al Software LibreAcercamiento al Software Libre
Acercamiento al Software Libre
 

PROGRAMACIÓN DE APLICACIÓNS CO FRAMEWORK CAKEPHP

  • 1. PROGRAMACIÓN DE APLICACIÓNS CO FRAMEWORK CAKEPHP Toni Martínez Carballo - http://ousli.org
  • 3. 1. INTRODUCCIÓN Arquitectura MVC (Modelo­Vista­Controlador). ● Integración de CRUD (Acrónimo de Create Read Update Delete). Esto permitiranos  ● facer consultas coa base de datos de forma sinxela, abstraéndonos en moitos  casos do uso de SQL. Uso de URL amigables para os buscadores, ademais de poder personalizalas o  ● noso gusto. Application Scaffolding ● Validación de formularios integrada ● Sistema de templates doado e rápido ● Sistema ACL propio. ● Limpeza de Datos, moi útil para liberar dos datos enviados polos usuarios de  ● ataques ou datos non desexados. Flexible sistema de Cache. ●
  • 5. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP Requisitos Antes de empezar a instalación debemos comprobar os  requerimentos básicos para o uso do framework. Os seus  requerementos son: Un servidor HTTP, como apache (non provei en outro), que  ● teña habilitado as sesións e o módulo mod_rewrite. PHP en verisións superioriores a 4.3.2 se se trata de php4, en  ● php5 tamé funciona perfectamente. Unha base de datos. Cake soporta MySQL e PostgreSQL  ● aínda que pode funcionar con máis cun wraper para ADODB.
  • 6. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP ¡Vamos coa Instalación! DESCARGAR CAKE PHP ● Cakephp ten neste intre dous brazos de desenvolvemento: 1.1.x.x ­­­> Actualmente 1.1.4797 – 1.2.x.x ­­> Aínda ¡Inestable! – Descargamos cakephp da súa web http://cakephp.org en concreto de  http://cakeforge.org/projects/cakephp/ DESCOMPRIMIR    tar xvfz cake_1.1.13.4797.tar.gz ●
  • 7. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP PARA A INSTALACIÓN  TEMOS TRES OPCIÓNS INSTALACIÓN PARA DESENVOLVEMENTO (¡Rápida!) – CONFIGURACIÓN DE PRODUCCIÓN – CONFIGURACIÓN AVANZADA –
  • 8. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP INSTALACIÓN PARA DESENVOLVEMENTO Simplemente consiste en copiar os ficheiros de cakephp nuna carpeta dentro  do noso DocumentRoot, neste caso o noso DocumentRoot será /var/www/ polo  que podemos copiar o contido da descompresión anterior no ake en  /var/www/cake/ e deste modo facendo un http://localhost/cake/ xa podemos  acceeder a nosa instalación. <Directory "/var/www/cake3/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,Deny Allow from all </Directory> ¡PERO! mod_rewrite instalado e con AllowOverride All para ó directorio 
  • 9. 2. INSTALACIÓN E CONFIGURACIÓN DE  CAKEPHP INSTALACIÓN PARA DESENVOLVEMENTO ¿FUNCIONA?
  • 10. 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP INSTALACIÓN DE PRODUCCIÓN Esta configuración, poderíamos dicir que é unha adaptación da ● anterior pero para unha web en producción, é dicir, nun dominio de internet no que tan só funcione esa web. mod_rewrite instalado e con AllowOverride All para ó directorio  ● Para que sexa nun dominio concreto, configuraremos un VirtualHost ● <VirtualHost *>         ServerName charlacake.net         DocumentRoot /var/www/cake3/app/webroot/         <Directory "/var/www/cake3/app/webroot/">                         Options Indexes MultiViews FollowSymLinks                         AllowOverride All                         Order allow,Deny                         Allow from all         </Directory> </VirtualHost>
  • 11. 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP CONFIGURACIÓN AVANZADA A configuración avanzada consiste en que tódolas webs que empregen cake e que teñamos no noso servidor, empregen a mesma librería de cake para que non teña que ser incluida en cada unha das webs.
  • 12. 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP CONFIGURACIÓN A BASE DE DATOS Temos que crear unha base de datos e darlle acceso a un usuario a ela. ● As opcións de configuración están en cake/app/config/database.php ● Este ficheiro o creamos a partir do que trae cake de exemplo e que se ● chama cake/app/config/databas.php.default var $default = array('driver' => 'mysql',                                                   'connect' => 'mysql_connect',                      'host' => 'localhost',                      'login' => 'inestable',                      'password' => 'inestable',                      'database' => 'xestion',                      'prefix' => '');
  • 13. 2. INSTALACIÓN E CONFIGURACIÓN DE CAKEPHP CONFIGURACIÓN AVANZADA Por exemplo, poderíamos facer a seguinte instalación: /usr/lib/cake -----> Aquí gardaríamos a librería de cake. ● /home/toni/miweb ---> Aquí gardaríamos os php da nosa aplicación. ● /var/www/toniblog ---> Aquí gardaríamos o webroot (ese directorio indícase ● no DocumentRoot de apache). Inicializamos as constantes no index.php do noso DocumentRoot if (!defined('ROOT')) { define('ROOT', DS.'home'.DS.'toni'); } if (!defined('APP_DIR')) { define ('APP_DIR', 'miweb'); } if (!defined('CAKE_CORE_INCLUDE_PATH')) { define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'); }
  • 14. 3.MVC
  • 15. 4. CONVENCIÓNS DE CAKE Nome dos modelos: <nome_singular_obxeto>, coa primeira letra en  ● maiúscula. Por exemplo o modelo que reflexa a entidade count é  Count. O nome do ficheiro php que codifica o modelo ten o seu  mesmo nome pero en minúsculas, ex: count.php Nome dos controladores: <nome_plural_modelo>Controller Por  ● exemplo CountsController e o seu ficheiro sería en minúsculas e  unha barra baixa para separar as verbas: counts_controller.php Nome das vistas: <nome_da_acción> Por exemplo: add.thtml ● Claves foráneas: <nome_modelo_singular_id> Por exemplo en a  ● clave foranea de Count en Transaction é count_id. Nome das táboas: <nome_modelo_plural>, en minúsculas. Por  ● exemplo a táboa de Count é counts
  • 17. 5. MODELO ASOCIACIÓNS ENTRE MODELOS Un dos puntos principais que proporciona cake que é as asociacións  existentes entre modelos que nos permitirán reflexar as relacións entre  táboas. As relacións existentes son: hasOne: Utilizada para indicar unha relación de 1 a 1. ● hasMany: Utilizada para indicar unha relación de 1 a N. ● belongsTo: Utilizada para indicar unha relación de N a 1. ● hasAndBelongsToMany: Utilizada para indicar unha relación de N a N. ●
  • 18. 5. MODELO VARIABLES DO MODELO $primaryKey ● $recursive ● $recursive = 0 (Cake colle os datos da táboa) – $recursive = 1 (Cake colle os datos da taboa e os dos seus asociados) – $recursive = 2 (Cake colle os datos da taboa, os dos seus asociados e  – os dos asociados dos seus asociados) $transactional ● $useTable ● $useDbConfig ●
  • 19. 5. MODELO VARIABLES DO MODELO $validate ● var $validate = array( 'count_id' => VALID_NOT_EMPTY, 'name' => VALID_NOT_EMPTY, 'amount' => VALID_NUMBER, 'date' => VALID_NOT_EMPTY, 'user_id' => VALID_NOT_EMPTY, ); VALID_NOT_EMPTY  ● VALID_NUMBER  ● VALID_EMAIL  ● VALID_YEAR  ● Predefinidas en /cake/lib/validators.php empregando expresións regulares. ●
  • 20. 5. MODELO FUNCIÓNS DE DATOS DO MODELO find ($conditions, $fields, $order, $recursive) ● findAll ($conditions, $fields, $order, $limit, $page, $recursive) ● field ($name, $conditions=null, $order=null) ● findAllBy<fieldName>($value) ● findBy<fieldName>($value) ● findNeighbours ($conditions, $field, $value) ● findCount($conditions) ● generateList ($conditions, $order, $limit, $keyPath, $valuePath) ● read ($fields, $id) ● query($data) ● execute($data) ●
  • 21. 5. MODELO FUNCIÓNS DE CALLBACK beforeFind(&$queryData) ● afterFind($results) ● beforeValidate() ● beforeSave() ● afterSave() ● beforeDelete() ● afterDelete() ●
  • 22. 6. CONTROLADOR No controlador definiremos o código que se debe de executar en cada  ● unha das accións. Todos os controladores, deberemos de gardalos en /app/controllers ● class PostsController extends AppController {     var $name = 'Posts';     function index()     {     }     function view($id)     {     }     function add()     {     }      }
  • 23. 6. CONTROLADOR VARIABLES DO CONTROLADOR $name ● $uses ● $helpers ● var $helpers = array('Html','Ajax','Javascript'); – $layout ● $autoRender ● $beforeFilter ● $components ●
  • 24. 6. CONTROLADOR PARÁMETROS DO CONTROLADOR $this­>data  ● $this­>params['form'] ● $this­>params['ajax'] ● $this­>params['controller'] ● $this­>params['action'] ● $this­>params['pass'] ● $this­>params['url'] ●
  • 25. 6. CONTROLADOR FUNCIÓNS DE DATOS DO CONTROLADOR set($var,$value) ● validateErrors() ● validate() ● redirect($url) ● flash($message,$url,$pause) ● requestAction($url,$extra) ● log($message,$type) ● FUNCIÓNS DE CALLBACK beforeFilter() ● afterFilter() ● beforeRender() ●
  • 26. 7. VISTA A vista é unha plantilla que se chama despois da acción. Estará formada  ● por HTML e PHP. Cake proporciona elementos que permiten a partir de  simples funcións xerar código HTML. Gárdanse en /app/views/posts/add.html ● Os datos que utiliza para mostralos o colle a partir do modelo o cal  ● inicializa unha variable (soe ser arry) mediante a funcion set(). Layouts: Ademáis das vistas, pódense engadir plantillas. Por defecto xa  ● existe unha plantilla que se pode personalizar e ademáis pódense engadir  máis inicializando a variable $layout no modelo. Elements: Permite xerar bloques específicos de HTML de forma  ● automática. Son moi útiles en caso de listas que nos xere a partir dun  array.
  • 27. BIBLIOGRAFÍA http://manual.cakephp.org ● http://api.cakephp.org ● http://cakephp.org/screencasts ● http://es.wikipedia.org/wiki/Modelo_Vista_Controlado ● http://www.mononeurona.org/index.php?idp=738 ●
  • 28. Licenza da ponencia Creative Commons Attribution­ShareAlike 2.5 License Texto da licenza dispoñible en http://creativecommons.org/licenses/by-sa/2.5/legalcode