Signets remarquables du 06/11/2008 au 13/11/2008

13/11/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 06/11/2008 et le 13/11/2008:

Case Insensitive Routes In CakePHP 1.2RC3 :: PseudoCoder.com
Des routes insensibles à la casse avec Matt. Un work in progress en attendant (dans la doc officielle ?) un point complet sur la gestion des expressions régulières dans les routes…
Validating Image Uploads in CakePHP - JonnyReeves.co.uk
Du code intéressant pour valider un upload d'image.
Promet CakePHP Source
Un blog sur CakePHP, en anglais, par Rachel.
Increo on Ideas » Reducing Memory Use in a CakePHP Application
Quelques conseils pour éviter qu'un site sous CakePHP consomme trop de RAM sur un serveur.
LDAP Data Source now with full CRUD ! « TBlog
Sur l'air du "ça peut toujours servir", Gonzalo a perfectionné le datasource LDAP proposé par Euphrate sur la Bakery… A tester…

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

Signets remarquables du 11/10/2008 au 21/10/2008

21/10/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 11/10/2008 et le 21/10/2008:

Neil Crookes » Recording created_by and modified_by
Une nouvelle pièce au dossier "comment enregistrer l'id de l'utilisateur qui créé/modifie un enregistrement".
cakeApp Screencast
Un screencast de présentation pour un outil en ligne qui génère des applications Cake ! C'est Powtac qui l'a fait et même si ça ne sert sans doute à rien concrétement (en tout cas tant qu'on ne peut pas télécharger le code généré pour le customiser à sa guise), c'est une très bonne mise en pratique de la puissance de CakePHP. Inclut un éditeur WYSIWYG de modèle de base de données sympathique.
AclExtras Shell | Mark Story
Mark Story a mis à jour avec l'aide d'Oscar Carlsson ses très précieux scripts Shell permettant de tenir à jour les ACO d'une application CakePHP à partir des méthodes définies dans les contrôleurs, en leur ajoutant des fonctionnalités de réparation.
ModelBaker
ModelBaker est une impressionnante application pour Mac qui permet de créer visuellement une application CakePHP. D'après le screencast en tout cas (l'application est en beta privée pour le moment). Wahou !
Getting a new Oven, Migrating from CakePHP 1.1 to 1.2 | Mark Story
Mark Story détaille les principaux changements entre la version 1.1 et la très prochaine version 1.2 de CakePHP

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

Signets remarquables du 07/10/2008 au 10/10/2008

10/10/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 07/10/2008 et le 10/10/2008:

GeoIp Component (Articles) | The Bakery, Everything CakePHP
Ah je l'avais loupé celui-là. Un composant sur la bakery qui permet d'utiliser dans CakePHP l'API de géolocalisation de MaxMind.
Demystifying Auth features in CakePHP 1.2 « nuts and bolts of cakephp
Teknoid en rajoute une couche sur son tutoriel précédent et en explicite deux points relatif à l'authentification.
Tips & Tricks about CakePHP | Cake Toppings
Un (nouveau ?) site de conseils et astuces sur CakePHP.
Accessing User Sessions From Models (or Anywhere) In CakePHP REVEALED! :: PseudoCoder.com
Comment accéder aux données de l'utilisateur connecté au niveau d'un modèle (par exemple pour mémoriser qui a fait telle ou telle modification à un enregistrement) sans casser les principes de CakePHP ? Une nouvelle proposition par Matt aka PseudoCoder.

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

Signets remarquables du 03/10/2008 au 07/10/2008

07/10/2008  |  Publié dans cakephp

Quelques bonnes adresses CakePHP vues entre le 03/10/2008 et le 07/10/2008:

Introduction to CakePHP features (build an app in less than 15 minutes) « nuts and bolts of cakephp
Teknoid, encore, mais cette fois-ci non pas pour une petite astuce comme ça en passant, mais pour un tutorial débutant assez complet (authentification, validation).
Lancez vos sites sur orbite avec Fredistrano 1.0 | < fbollon.net />
Fredistrano est un outil de déploiement automatisé d'applications web, annoncé aujourd'hui en version 1.0 pour le 15 octobre. Il s'appuie sur CakePHP 1.2 et est inspiré (comme le nom l'indique) de Capistrano.
Sharing CakePHP session with another app « nuts and bolts of cakephp
Encore une petite astuce (ou un petit rappel, c'est selon) de teknoid, sur la façon de partager les infos mises en session dans une application tierce.
A few words about media views (sending binary files to the user) « nuts and bolts of cakephp
Quelques mots de teknoid sur une fonctionnalité méconnue de CakePHP, permettant de faciliter le téléchargement de fichiers binaires.

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

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

  • pictures of the north country
  • photos de bubu
  • Debuggable
  • Google Group CakePHP Fr
  • blogcatalog
  • Web Development 2
  • Le blog de Pierre
  • snook.ca
  • Julien Bourgeois
  • mes photos
  • Frédéric de Villamil
  • Mark Story
  • Formation CakePHP
  • Cakebaker
  • POPnews
  • Derniers commentaires

    • Pierre MARTIN: Tu peux essayer de rajouter un champ “counterCache” dans ton modèle....
    • rafaelbandeira3: hey, thanks for the reference of my work! btw, may I ask you to correct my name?...
    • Michael: Salut ! Ayant lu les 2 premiers, il semble évident de recommander aux éventuels...
    • Michael: Article sympa, mais j’y ajouterai 2 ouvrages : http://www.apress.com/book/...
    • Xavier: Bonjour, Merci pour cette critique. Nous comptons mettre à jour le livre blanc assez...
  • Derniers trackbacks