Signets remarquables du 29/09/2008 au 02/10/2008

02/10/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 29/09/2008 et le 02/10/2008:

Migration from CakePHP 1.2 RC2 to RC3 - cakebaker
Un premier retour d'expérience sur une migration de la RC2 à la RC3, par Daniel Hofstetter. Rien de bien méchant…
CakePHP and Layout - secret of data passing through | Dev weblog
Une intéressante façon d'afficher un menu dynamique sur toutes les pages d'un site.
Dealing with calculated fields in CakePHP’s find() « nuts and bolts of cakephp
Une petite astuce qui permet de rendre cohérent les résultats d'un Model::find() avec un champ calcul.
Kata - A lightweight and fast MVC Framework for PHP5
Un framework PHP 5 dont voici la page de présentation / tutoriel. Ressemble étrangement à CakePHP !

Plus sur ma page delicious consacr�©e �  CakePHP.

Incrémenter un champ

25/09/2008  |  Publié dans cakephp

Suite à une question à laquelle j’avais répondu sur le Google Group français consacré à CakePHP, je me suis dit que j’allais ajouter à mon app_model.php la méthode suivante :

  1. <?php
  2. // dans {app}/app_model.php
  3.         /**
  4.          * incrémente d’un le champ $field de l’enregistrement de clef primaire $id
  5.          *
  6.          * @var int id clef primaire de l’enregistrement dont on veut incrémenter un champ
  7.          * @var string field champ du modèle à incrémenter
  8.          * @var int value valeur de l’incrément, par défaut 1
  9.          * @return bool
  10.          * @author Guillaume
  11.          **/
  12.         function incField($id = null, $field = null, $value = 1) {
  13.                 if(!empty($field) && !empty($id)) {  
  14.                  return $this->updateAll(array($this->alias.‘.’.$field => $value.‘ + ‘.$this->alias.‘.’.$field),  
  15.                                         array($this->alias.‘.’.$this->primaryKey => $id));  
  16.             }
  17.                 return false;
  18.         }
  19. ?>

On l’utilise ainsi simplement dans, par exemple, une méthode view, pour incrémenter un compteur à chaque visualisation d’un contenu, et ce dans n’importe quel modèle :

  1. function view($id = null) {
  2.                 if (!$id) {
  3.                         $this->flash(__(‘Invalid Link’, true), array(‘action’=>‘index’));
  4.                 }
  5.                 $this->Link->incField($id, ‘hits’);
  6.                 $this->set(‘link’, $this->Link->read(null, $id));
  7.         }

Le guide du Router::

21/09/2008  |  Publié dans cakephp

La classe Router permet, à travers le ficher de configuration routes.php, de se mitonner des URLs aux petits oignons pour son application. On peut également utiliser sa méthode url de manière statique et c’est très pratique. Petit échantillon avec deux exemples d’utilisation.
Lire la suite de ce post »

CakePHP : comment bien débuter

16/09/2008  |  Publié dans cakephp

Le succès de CakePHP s’accompagne fort logiquement d’un afflux de nouveaux développeurs voulant utiliser le framework. Voici quelques pistes pour démarrer au mieux.

A mon avis, le coeur de cible de CakePHP (et sans doute des autres outils du même genre), c’est le développeur PHP qui, après plusieurs applications développées avec ses petites mains, se rend compte qu’il en a marre de réinventer la roue, que certaines taches fastidieuses (par exemple les validations de formulaires, les requêtes d’insertion dans la base de données…) se répètent à chaque nouveau projet, que l’utilisation de bibliothèques externes récupérées à droite et à gauche nuit à l’homogénéité de son code. Si vous ne vous reconnaissez pas dans ce profil, ne passez pas votre chemin, tout reste possible ! Néanmoins, CakePHP impose à mon avis quelques prérequis qu’il est important d’avoir en tête avant de se jeter à corps perdu dans un projet :

connaître la programmation en PHP : oui, il faut connaître un minimum la syntaxe de PHP pour utiliser CakePHP. Le framework fait plein de choses magiques, génère lui-même du code sans qu’on n’ait rien à faire, mais ne se substitue aucunement à PHP. Les bases se trouvent dans le manuel PHP.
connaître les bases de la conception d’application et en particulier de la conception de modèles de données. Dès que l’application est un tantinet spécifique et complexe, il faut réfléchir avant de se lancer, impossible d’y couper. Une fois votre base de données bien construite, CakePHP fera son boulot. Un post sur la bakery (en anglais) explique bien l’articulation entre cette tache et le développement avec CakePHP.
connaître les bases de la programmation à objets. Pas besoin d’être un cador mais il est préférable de maîtriser les concepts de base : héritage, classe, objet, méthode, …
connaître quelques uns des Design Patterns sur lesquels est fondé le framework est un sérieux plus : MVC, Active Records

Une fois acquises ces connaissances de base, voici les ressources (avec un accent sur les francophones) qui vous seront essentielles pour démarrer :

  • longtemps le point faible de CakePHP dans sa version 1.2, le manuel collaboratif s’enrichit de jour en jour. Il est perfectible, peut-être pas assez progressif et il y a encore quelques zones d’ombre, mais il faut absolument le lire au moins une fois, et le garder sous le coude en référence ensuite. En particulier, le tutoriel du blog est un passage obligé pour découvrir le framework.
  • la communauté française se met en place. Elle dispose notamment d’un forum et d’un Google Groupe où vous pourrez discuter et poser des questions.
  • le blog Formation CakePHP est la référence francophone en matière de tutoriels clairs et détaillés. 

Quand le manuel ne suffit pas, quand Google n’est pas votre ami, voici trois pistes supplémentaires.

  • la plus ardue est d’aller lire le code des librairies composant le framework pour comprendre comment la méthode qui vous pose souci fonctionne - problème, il faut comprendre ce code, ce qui n’est pas toujours aisé. Mais l’exercice est toujours formateur.
  • la lecture de la documentation de l’API (générée automatiquement et basée sur les commentaires présents dans le code) est plus accessible, mais sa pertinence dépend de celle des commentaires, qui sont parfois laconiques.
  • troisième méthode, peut-être plus efficace : la stabilité et la fiabilité du fonctionnement de CakePHP au fil des évolutions est assurée par une multitude de tests unitaires. Outre ces garanties de fonctionnement, ces tests unitaires apportent une extraordinaire documentation par l’exemple sur le “comment ça marche”. Un exemple ? Avant qu’elle ne soit documentée dans le manuel, nous sommes nombreux à avoir découvert le fonctionnement de la puissante classe Set en lisant ses tests unitaires.

Voilà donc un peu de lecture :)

Derniers conseils : débutants, évitez de vous lancer directement dans une “grosse” application (plus de 10 tables, disons), essayez d’abord de développer votre petite application à vous. Une application simple, facile à modéliser, sur laquelle vous pourrez vous faire la main. Pour James Fairhurst, ça a été une application de gestion de DVDthèque en ligne, et il en a fait un tutoriel en douze épisodes qui commence ici (en anglais).

Et comme on dit par chez nous, happy baking !

Archives

Liens au pif

  • photos de bubu
  • Cakebaker
  • snook.ca
  • Pseudocoder
  • Julien Bourgeois
  • Frédéric de Villamil
  • Yahoo Pipe des sites CakePHP FR
  • Mark Story
  • Google Group CakePHP Fr
  • pictures of the north country
  • POPnews
  • Le blog de Pierre
  • Chez Trân
  • Debuggable
  • Formation CakePHP