Download - Cakephp
Une introductionPar Padraig Galvin
Présentation du framework
● Architecture Model View Controller (MVC)● Programmation orientée objet (OOP)● Crée en 2005 (pour PHP 4.3)● Inspirée de Ruby on Rails
– Convention over configuration– DRY : don't repeat yourself
● Licence MIT (open source)● Projet actif avec des mise a jour fréquente● PHP version 5.2.8 +
Caractéristiques
● Validation et assainissement des données simple● Gestion des associations entre les données
automatique● Système de templates avec des layouts, éléments
réutilisables et helpers● Composants et utilitaires intégrés pour gérer la cache,
les emails, cookies …● Sessions, authentification et contrôle d'accès● Internationalisation (i18n) et localisation (i10n) ● Échafaudage et génération de code
Structure du répertoire
/app/Config/Console/Controller/Lib/Locale/Model/Plugin/Test/Vendor/View/tmp/webroot
/lib/Cake
/plugins/vendors
← Votre application
← Cœur de CakePHP
← Répertoire publique : CSS, JS, images …
← Fichiers temporaire : cache, logs …
← Configuration : routage, base de donné, sessions … ← Scripts CLI/Shell (Cron jobs).
← Traductions Gettext (fichiers PO).
← Unit tests (PHPUnit).
Les conventions
Route /articles /articles/addGET / POST
/articles/edit/36
ControllerClass: ArticlesController
File: app/Controller/ArticlesController.php
Action (method) index() add() edit($id)
Viewapp/View/Articles/
index.ctpapp/View/Articles/
add.ctpapp/View/Articles/
edit.ctp
ModelClass: Article
File: app/Model/Article.php
Database table articles
Un simple exemple
Exemple d'application :
Le schémaclients
idnameemailcreatedmodified
tickets
idclient_iddescriptioncreatedmodified
tags
idname
tags_tickets
idtag_idticket_id
Exemple d'application :
Les modèles
/app/Model/Client.php
/app/Model/Tag.php
/app/Model/Ticket.php
Exemple d'application :
Les relations
/app/Model/Client.php
/app/Model/Tag.php
/app/Model/Ticket.php
Exemple d'application :
Validation de donnée
/app/Model/Client.php
alphaNumeric betweenblankbooleancccomparisoncustomdatedatetimedecimalemailequalToextensionfileSizeinListipluhn
maxLengthmimeTypeminLengthmoneymultiplenaturalNumbernotEmptynumericphonepostalrangessntimeuploadErrorurluserDefineduuid
Règles de validation disponibles
Exemple d'application :
Liste des clients (index)
/app/Controller/ClientsController.php/app/View/Client/index.ctp
example.com/clients
Un petit test
/app/View/Client/index.ctp
find(string $type, array $params)
firstallcountlistthreadedneighbors
conditionsrecursivefieldsorderlimit...
Exemple d'application :
Afficher un client (view)
/app/View/Client/view.ctp
example.com/clients/view/3
Un petit test/app/Controller/ClientsController.php
/app/View/Client/view.ctp
Exemple d'application :
Ajouter un client (add)/app/Controller/ClientsController.php
/app/View/Client/add.ctp POST : example.com/clients/add
/app/Controller/ClientController.php
Les données
Exemple d'application :
Ajouter un client (add)/app/View/Client/add.ctp - vues alternatifs
Minimal : Précis :
HTML généré :
HTML généré :
Exemple d'application :
modifier un client (edit)/app/Controller/ClientsController.php /app/View/Client/edit.ctp
Exemple d'application :
supprimer un client (delete)/app/Controller/ClientsController.php
Lien pour supprimer
Astuces et conseils
● Commencez par les tutoriels de la documentation officielle
● Prenez le temps de réfléchir à votre schéma de base de données
● Utilisez bake avec des templates personnalisé● Ne pas réinventez la roue, surtout pour la
sécurité● Respectez les conventions !
Version 3.0
● PHP version 5.4 +● Installation avec Composer (http://getcomposer.org/)● Namespaces● Modèle amélioré avec données en forme d'objet● Configuration consolidée● Et beaucoup plus …
Ressources
● Sites et téléchargements :
– http://cakephp.org
– http://www.cakephp-fr.org/● Le « Cookbook » (documentation) :
– http://book.cakephp.org/2.0/fr/
● Support :
– https://groups.google.com/forum/#!topic/cakephp/
– http://stackoverflow.com/tags/cakephp
– irc://irc.freenode.net/cakephp
● Code source :
– https://github.com/cakephp/cakephp