Vous êtes sur la page 1sur 19

Une introduction

Par Padraig Galvin

Prsentation du framework

Architecture Model View Controller (MVC)

Programmation oriente objet (OOP)

Cre en 2005 (pour PHP 4.3)

Inspire de Ruby on Rails

Convention over configuration

DRY: don't repeat yourself

Licence MIT (open source)

Projet actif avec des mise a jour frquente

PHP version 5.2.8 +

Caractristiques

Validation et assainissement des donnes simple


Gestion des associations entre les donnes
automatique
Systme de templates avec des layouts, lments
rutilisables et helpers
Composants et utilitaires intgrs pour grer la cache,
les emails, cookies

Sessions, authentification et contrle d'accs

Internationalisation (i18n) et localisation (i10n)

chafaudage et gnration de code

Structure du rpertoire
/app
/Config
/Console
/Controller
/Lib
/Locale
/Model
/Plugin
/Test
/Vendor
/View
/tmp
/webroot
/lib
/Cake
/plugins
/vendors

Votre application
Configuration: routage, base de donn, sessions
Scripts CLI/Shell (Cron jobs).

Traductions Gettext (fichiers PO).

Unit tests (PHPUnit).

Fichiers temporaire: cache, logs


Rpertoire publique: CSS, JS, images

Cur de CakePHP

Les conventions
Route
Controller

Action (method)

View

Model

Database table

/articles/add
GET / POST

/articles

/articles/edit/36

Class: ArticlesController
File: app/Controller/ArticlesController.php
index()

add()

edit($id)

app/View/Articles/
index.ctp

app/View/Articles/
add.ctp

app/View/Articles/
edit.ctp

Class: Article
File: app/Model/Article.php
articles

Un simple exemple

Exemple d'application:

Le schma
clients
id
name
email
created
modified

tags
id
name

tickets
id
client_id
description
created
modified

tags_tickets
id
tag_id
ticket_id

Exemple d'application:

Les modles
/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 donne
/app/Model/Client.php

Rgles de validation disponibles


alphaNumeric
between
blank
boolean
cc
comparison
custom
date
datetime
decimal
email
equalTo
extension
fileSize
inList
ip
luhn

maxLength
mimeType
minLength
money
multiple
naturalNumber
notEmpty
numeric
phone
postal
range
ssn
time
uploadError
url
userDefined
uuid

Exemple d'application:

Liste des clients (index)


Un petit test
/app/Controller/ClientsController.php

/app/View/Client/index.ctp

example.com/clients

/app/View/Client/index.ctp
find(string $type, array $params)

first
all
count
list
threaded
neighbors

conditions
recursive
fields
order
limit
...

Exemple d'application:

Afficher un client (view)


/app/Controller/ClientsController.php

Un petit test
/app/View/Client/view.ctp

example.com/clients/view/3
/app/View/Client/view.ctp

Exemple d'application:

Ajouter un client (add)


/app/Controller/ClientsController.php

Les donnes
/app/Controller/ClientController.php

/app/View/Client/add.ctp

POST: example.com/clients/add

Exemple d'application:

Ajouter un client (add)


/app/View/Client/add.ctp - vues alternatifs
Minimal:

Prcis :

HTML gnr:

HTML gnr:

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 rflchir votre schma de
base de donnes
Utilisez bake avec des templates personnalis
Ne pas rinventez la roue, surtout pour la
scurit
Respectez les conventions!

Version 3.0

PHP version 5.4 +

Installation avec Composer (http://getcomposer.org/)

Namespaces

Modle amlior avec donnes en forme d'objet

Configuration consolide

Et beaucoup plus

Ressources

Sites et tlchargements:

http://cakephp.org

http://www.cakephp-fr.org/

Le Cookbook (documentation):

Support:

http://book.cakephp.org/2.0/fr/
https://groups.google.com/forum/#!topic/cakephp/
http://stackoverflow.com/tags/cakephp
irc://irc.freenode.net/cakephp

Code source:

https://github.com/cakephp/cakephp