Caution: You are browsing the legacy 1.x part of this website.
This version of symfony is not maintained anymore. If some of your projects still use this version, consider upgrading.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.

Master Symfony2 fundamentals

Be trained by SensioLabs experts (2 to 6 day sessions -- French or English).
trainings.sensiolabs.com

Discover the SensioLabs Support

Access to the SensioLabs Competency Center for an exclusive and tailor-made support on Symfony
sensiolabs.com
Blackfire Profiler Fire up your PHP Apps Performance

PHP Project Quality Done Right
Jobeet
Support symfony!
Buy this book
or donate.
Buy Jobeet from amazon.com

Introduction

Le framework symfony est un projet Open-Source depuis plus de 3 ans. Il est devenu l'un des plus populaire framework PHP grâce à ses fonctionnalités et sa bonne documentation. Cette grande tradition à commencer dès le début.

En Décembre 2005, après la première version officielle de symfony, nous avons publié "le tutorial Askeet", une série de 24 tutoriels publiés jour par jour entre le 1er Décembre et Noël.

Ce tutoriel a prouvé qu'il était un formidable outil pour promouvoir le framework aux nouveaux développeurs. Beaucoup de développeurs ont appris symfony grâce à askeet, et beaucoup d'entreprises l'utilisent encore aujourd'hui comme principal support d'apprentissage.

Mais le tutoriel askeet a commencé à montrer son âge et avec la publication de symfony 1.2, nous avons décidé de publier un nouveau calendrier de l'avent, Jobeet.

Ce tutoriel a été publié au jour le jour sur le blog de symfony en 2008, et vous lisez son incarnation en livre.

Le défi

Chaque chapitre/jour est destiné à durer environ une heure, et sera l'occasion d'apprendre symfony en codant un vrai site web, du début à la fin.

24 fois une heure est égal à un jour, nous pensons que c'est le temps nécessaire à un développeur pour apprendre les bases de symfony. Chaque jour, nous ajouterons de nouvelles fonctionnalités à l'application. Nous en profiterons pour vous présenter les nouvelles fonctionnalités de symfony ainsi que les bonnes pratiques de développement web.

Pour askeet, le 21ième jour était : "payez vous un gourou symfony pour un jour". Nous n'avions pas de plan et la communauté devait nous proposer une fonctionnalité à ajouter à askeet. Ce fût un énorme succès et la communauté décida que l'application devait avoir un moteur de recherche. Et nous l'avons fait. Le 21ième jour a également montré, que c'était l'un des plus populaires du tutoriel askeet.

Pour Jobeet, nous avons célébré le jour de l'hiver ce 21 Décembre par un "jour du design". Le design gagnant a été présenté par le centre{source}, et est utilisé dans ce tutoriel pour le design par défaut. Il est également utilisé pour le design du site Jobeet.

Ce tutoriel est différent

Rappelez-vous les premiers jours de PHP4. Ah, la Belle Epoque ! PHP est l'un des premiers langages dédiés au web et l'un des plus facile à apprendre.

Mais comme les technologies du web évoluent à un rythme très rapide, les développeurs Web doivent se tenir au courant sur les dernières meilleures pratiques et les outils. La meilleure façon d'apprendre est bien sûr par la lecture des blogs, des tutoriels et des livres. Nous avons lu beaucoup d'entre eux, qu'ils soient écrits pour PHP, Python, Java, Ruby ou Perl, et beaucoup d'entre eux nous laisse sur notre faim lorsque l'auteur commence à donner des morceaux de codes à titre d'exemples.

Vous êtes sans doute habitués à lire des avertissements du genre:

«Pour une application réelle, n'oubliez pas d'ajouter la validation et la manipulation d'erreur appropriée.»

Ou

«La sécurité est laissée en exercice au lecteur.»

Ou

«Vous aurez bien sûr besoin d'écrire des tests.»

Pardon ? Ces choses sont sérieuses. Ils sont peut-être la partie la plus importante de tout morceau de code. Et en tant que lecteur, on vous laisse seuls. Sans que ces préoccupations soient prises en compte, les exemples sont beaucoup moins utiles. Vous ne pouvez pas les utiliser comme un bon point de départ. C'est très grave ! Pourquoi ? Parce que la sécurité, la validation, le traitement des erreurs et les tests, pour n'en nommer que quelques-uns, sont importants pour avoir un bon code.

Dans ce tutoriel, vous ne verrez jamais des déclarations car nous allons écrire des tests, la gestion d'erreur, le code de validation, et soyez sûr que nous développons une application sécurisée. C'est parce que symfony est sur??? le code, mais également sur les meilleures pratiques et comment développer des applications professionnelles pour l'entreprise. Nous serons en mesure de se permettre ce luxe, car symfony fournit tous les outils nécessaires pour coder ces aspects aisément sans écrire trop de code.

La validation, la manipulation d'erreur, la sécurité, et les tests sont des citoyens de première classe dans symfony, ainsi cela ne nous prendra pas trop de temps à expliquer. Ce n'est là qu'une des nombreuses raisons d'utiliser un framework pour la «vie réelle» des projets.

Tout le code que vous lirez dans ce tutoriel est un code que vous pourriez utiliser pour un projet réel. Nous vous encourageons à copier/coller des bouts de code ou de voler des morceaux entiers.

Le Projet

L'application qui va être conçue aurait pu être encore un autre moteur de blog. Mais nous voulons utiliser symfony pour un projet utile. L'objectif est de montrer que symfony peut être utilisé pour développer des applications professionnelles avec du style et peu d'effort.

Nous conserverons le contenu du projet secret jusqu'au prochain jour car nous avons à faire aujourd'hui. Vous connaissez déjà le nom de l'application : Jobeet.

Qu'allons nous faire aujourd'hui ?

Comme 24 heures représentent un temps suffisant pour développer une application avec symfony, nous n'écrirons pas de code PHP aujourd'hui. Mais même sans écrire une ligne de code, vous allez commencer à comprendre les bénéfices de l'utilisation d'un framework comme symfony seulement en mettant en place un nouveau projet.

L'objectif du jour est d'installer l'environnement de développement et d'afficher une page de l'application dans un navigateur. Cela demande d'installer symfony, de créer une application, et de configurer un serveur web.

Prérequis

Avant tout, vérifiez que vous avez un environnement de développement web avec un serveur web (Apache par exemple), un moteur de base de données (Mysql, PostgreSQL, SQLite), et PHP dans sa version 5.2.4 ou supérieure.

Comme nous utilisons beaucoup la ligne de commande, il est préférable d'utiliser un Unix-like OS. Si vous utilisez un système Windows, cela fonctionnera également, vous devrez seulement taper quelques commandes à l'invite de cmd.

note

Les commandes shell Unix sont pratiques dans un environnement Windows. Si vous voulez utiliser des outils comme tar, gzip, ou grep dans Windows, vous pouvez installer Cygwin. La documentation officielle est un peu petite, mais un bon guide d'installation est disponible ici. Les aventureux pourront essayer les Windows Services for Unix de Microsoft.

Comme ce tutoriel se concentre plus particulièrement sur le framework symfony, nous considérerons que vous disposez déjà d'un solide bagage en PHP5 et programmation Orientée Objet.

L'installation de symfony

Premièrement, créer un répertoire pour enregistrer les fichiers du projet Jobeet :

$ mkdir -p /home/sfprojects/jobeet
$ cd /home/sfprojects/jobeet

Sous Windows:

c:\> mkdir c:\development\sfprojects\jobeet
c:\> cd c:\development\sfprojects\jobeet

note

Nous conseillons aux utilisateurs de Windows de faire fonctionner symfony et d'installer leur nouveau projet dans un chemin qui ne contient pas d'espaces. Éviter d'utiliser le dossier Documents and Settings et Mes Documents.

Créer un répertoire pour enregistrer les fichiers de la librairie du framework symfony :

$ mkdir -p lib/vendor

La page d'installation sur le site de symfony liste et compare toutes les versions disponibles de symfony.

Comme le tutoriel est écrit pour symfony version 1.2, aller à la page d'installation pour symfony 1.2.

En dessous de la section "Source Download", vous trouverez l'archive au format tgz ou .zip. Téléchargez l'archive et mettez la dans le dossier lib/vendor fraîchement créée, puis décompressez la.

$ cd lib/vendor
$ tar zxpf symfony-1.2.2.tgz
$ mv symfony-1.2.2 symfony
$ rm symfony-1.2.2.tgz

Sous Windows, la décompression du fichier zip peut être fait avec l'explorateur. Après avoir renommé le répertoire en symfony, vous devriez avoir un répertoire nommé c:\development\sfprojects\jobeet\lib\vendor\symfony.

Comme la configuration de PHP varie d'une distribution à une autre, nous devons vérifier que votre configuration PHP répond aux exigences minimums de symfony. Exécutez le script de vérification de configuration fournit avec symfony à partir de la ligne de commande :

$ cd ../..
$ php lib/vendor/symfony/data/bin/check_configuration.php

S'il y a un problème, la sortie vous donnera les conseils pour le résoudre. Vous devez également exécuter la vérification à partir d'un navigateur car la configuration PHP peut être différente. Copiez le fichier quelque part dans le répertoire racine du serveur web et accédez au fichier. N'oubliez pas de supprimer le fichier à partir du répertoire racine web après:

$ rm web/check_configuration.php

Vérification de la configuration

Si le script n'affiche aucune erreur, vérifiez que symfony est installé correctement en utilisant la ligne de commande|Ligne de Commande de symfony pour afficher la version (notez V en majuscule) :

$ php lib/vendor/symfony/data/bin/symfony -V

Sous Windows:

c:\> cd ..\..
c:\> php lib\vendor\symfony\data\bin\symfony -V

Si vous êtes curieux et que vous voulez voir ce que la ligne de commande peut faire pour vous, tapez symfony pour lister les options et les tâches disponibles :

$ php lib/vendor/symfony/data/bin/symfony

Sous Windows:

c:\> php lib\vendor\symfony\data\bin\symfony

La ligne de commande symfony est la meilleure amie du développeur. Elle fournit un ensemble d'utilitaire qui augmente votre productivité pour vos activités de tous les jours comme vider le cache, générer du code, et beaucoup plus encore.

Installation du Projet

Dans symfony les applications partagent le même modèle de données et sont regroupées par projets. Pour le projet Jobeet nous aurons deux applications différentes : une nommée frontend|Frontend et l'autre backend|Backend.

Création du Projet

A partir du répertoire jobeet exécuter la tâche symfony generate:project pour créer le projet.

$ php lib/vendor/symfony/data/bin/symfony generate:project jobeet

Sous Windows:

c:\> php lib\vendor\symfony\data\bin\symfony generate:project jobeet

La tâche generate:project génère la structure|Structure par défaut des répertoires et crée les fichiers nécessaires d'un projet symfony.

Directory Description
apps/ Contient les applications du projet
cache/ Les fichiers en cache
config/ Les fichiers de configuration du projet
lib/ Les librairies et classes du projet
log/ Les fichiers de logs du framework
plugins/ Les plugins installés
test/ Les tests unitaires et fonctionnels
web/ Le répertoire racine web (voir dessous)

note

Pourquoi symfony génère autant de fichiers ? Un des bénéfices d'utiliser un framework hiérarchisé c'est de standardiser vos développements. Grâce à la structure par défaut des fichiers et répertoires de symfony, n'importe quel développeur connaissant symfony peut reprendre n'importe quel projet symfony. En quelques minutes, il sera à même de naviguer dans le code, de corriger les bogues, et d'ajouter de nouvelles fonctionnalités.

La tâche generate:project a également créé un raccourci symfony à la racine du projet Jobeet pour faciliter l'écriture de la commande lorsque vous exécutez une tâche.

À partir de maintenant, au lieu d'utiliser le chemin complet pour exécuter la commande symfony, nous utiliserons le raccourci symfony.

Création d'application

Créez l'application frontend en exécutant la tâche generate:app :

$ php symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret frontend

tip

Comme le raccourci symfony est exécutable, les utilisateurs Unix peuvent remplacer chaque occurrence 'php symfony' par './symfony' dès maintenant.

Pour Windows vous pouvez copier le fichier 'symfony.bat' dans votre projet et utiliser 'symfony' à la place de 'php symfony' :

c:\> copy lib\vendor\symfony\data\bin\symfony.bat .

Basé sur le nom de l'application donnée comme argument, la tâche generate:app crée la structure de répertoire par défaut nécessaire à l'application sous le répertoire apps/frontend :

Répertoire Description
config/ Les fichiers de configuration de l'application
lib/ Les librairies et classes de l'application
modules/ Le code de l'application (MVC)
templates/ Les Templates principaux

tip

Toutes les commandes symfony doivent être exécutées à partir du répertoire racine du projet, sauf si le contraire est explicitement indiqué.

Lorsque nous avons appelé la tâche generate:app nous avons passé deux options pour la sécurité :

  • --escaping-strategy: Active les échappements pour prévenir des attaques XSS
  • --csrf-secret: Active les jetons de sessions des formulaires pour prévenir des attaques CSRF

En passant ces deux options à la tâche, nous avons sécurisé notre futur développement des deux plus courantes vulnérabilités trouvées sur le web. C'est bien, symfony va automatiquement prendre les mesures de sécurité|Sécurité pour nous.

note

Si vous ne connaissez pas XSS ou CSRF, prenez le temps d'apprendre un peu plus sur ces failles de sécurité.

Le Chemin de Symfony

Vous pouvez voir la version de symfony utilisée par votre projet en tapant :

$ php symfony -V

L'option V affiche également le chemin vers le répertoire d'installation de symfony, que vous retrouvez également dans le fichier config/ProjectConfiguration.class.php :

// config/ProjectConfiguration.class.php
require_once '/Users/fabien/work/symfony/dev/1.2/lib/autoload/sfCoreAutoload.class.php';

Pour une meilleure portabilité du projet, changez le chemin absolu de l'installation de symfony par un chemin relatif :

// config/ProjectConfiguration.class.php
require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';

De cette façon vous pouvez déplacer votre projet Jobeet n'importe où sur votre machine ou sur une autre, cela fonctionnera toujours.

Les environnements

Si vous regardez le répertoire web/, vous trouverez deux fichiers PHP : index.php et frontend_dev.php. Ces fichiers sont appelés contrôleurs frontaux|Contrôleurs Frontaux; toutes les requêtes de l'application se font par leur intermédiaire. Mais pourquoi nous avons deux contrôleurs frontaux alors que nous avons qu'une application ?

Les deux fichiers pointent sur la même application mais pour des environnements différents. Lorsque vous développez une application, sauf si vous développez directement sur le serveur de production, vous avez besoin de plusieurs environnements :

  • L'environnement de développement : C'est l'environnement utilisé par les développeurs Web quand ils travaillent sur l'application pour ajouter de nouvelles fonctionnalités, corriger des bugs, ...
  • L'environnement de test : Cet environnement est utilisé pour tester automatiquement l'application.
  • L'environnement de qualité : Cet environnement est utilisé par le client pour tester l'application et les bogues ou les fonctionnalités manquantes.
  • L'environnement de production : C'est l'environnement où interagissent les utilisateurs finaux

Qu'est ce qui rend un environnement unique ? Dans l'environnement de développement par exemple, l'application doit se connecter à tous les détails d'une requête afin de faciliter le débogage, mais le système de cache doit être désactivé de façon que tous les changements apportés au code soient pris en compte sans tarder. Ainsi, l'environnement de développement doit être optimisé pour le développeur. Le meilleur exemple est certainement lorsqu'une exception|Exception se produit. Pour aider le développeur à déboguer le problème plus rapidement, symfony affiche l'exception avec toutes les informations qu'elle a sur la requête courante dans le navigateur :

Une exception dans l'environnement de dev

Par contre sur l'environnement de production, la couche du cache doit être activé, et bien entendu, l'application doit afficher les messages d'erreurs à la place des exceptions. Ainsi, l'environnement de production doit être optimisé pour la performance et l'expérience utilisateur.

Une exception dans l'environnement de prod

Un environnement de symfony est un ensemble unique de paramètres de configuration. Le framework symfony est livré avec trois d'entre eux : dev, test, et prod. Durant la journée 22, vous apprendrez à créer de nouveaux environnements, comme celle de staging.

Si vous ouvrez les fichiers des contrôleurs frontaux, vous verrez que leur contenu est le même, sauf pour la configuration de l'environnement :

// web/index.php
<?php
 
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
 
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
sfContext::createInstance($configuration)->dispatch();

note

La définition d'un nouvel environnement de symfony est aussi simple que la création d'un nouveau contrôleur frontal. Nous verrons plus tard comment modifier les paramètres d'un environnement.

Configuration du serveur web : la pire méthode

Dans la section précédente, un répertoire a été créée pour héberger le projet Jobeet. Si vous l'avez créée quelque part en dessous de la racine web de votre serveur, vous pouvez dès à présent y accéder par un navigateur.

Bien sûr comme cela vous n'avez rien à configurer, c'est très rapide à installer, mais essayer d'accéder au ficher config/databases.yml à partir de votre navigateur pour comprendre les mauvaises conséquences que peuvent avoir une attitude de paresseux. Si l'utilisateur sait que votre site est développé avec symfony, il aura accès à un grand nombre de fichiers sensibles.

Ne jamais utiliser cette installation sur un serveur de production et lisez la section suivante pour apprendre à configurer correctement votre serveur web.

Configuration du server web : la méthode sécurisée

Une bonne pratique pour le web est de mettre seulement sous la racine web les fichiers qui seront appelés par un navigateur comme les feuilles de style, les fichiers Javascript ou les images. Par défaut nous vous recommandons de stocker ces fichiers dans des sous-répertoires du dossier web de votre projet symfony.

Si vous regardez ce répertoire, vous trouverez des sous-répertoires avec les éléments cités ci-dessus et les deux fichiers des contrôleurs frontaux. Les contrôleurs frontaux sont les seuls fichiers PHP qui doivent être sous la racine web. Tous les autres fichiers PHP doivent être inaccessible par un navigateur, ce qui est une bonne idée notamment pour la sécurité.

Configuration du serveur web

Maintenant il est temps de modifier votre configuration d'Apache pour rendre accessible au monde entier votre projet.

Trouvez et ouvrez votre fichier de configuration httpd.conf puis ajoutez ces lignes à la fin :

# Soyez certain de n'avoir cette ligne qu'une seule fois dans votre fichier
NameVirtualHost 127.0.0.1:8080

# Configuration pour Jobeet
Listen 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>
  DocumentRoot "/home/sfprojects/jobeet/web"
  DirectoryIndex index.php
  <Directory "/home/sfprojects/jobeet/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf
  <Directory "/home/sfprojects/jobeet/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

note

l'alias /sf vous donne accès aux images et fichiers Javascript nécessaires au bon affichage des pages par défaut de symfony et de la barre d'outils web de débogage (web debug toolbar)

Pour Windows, vous devez remplacer la ligne Alias avec quelque chose comme :

Alias /sf "c:\development\symfony\data\web\sf"

/home/sfprojects/jobeet/web doit être remplacé par :

c:\development\sfprojects\jobeet\web

Cette configuration fait écouter Apache sur le port 8080 de votre machine, donc le site Jobeet sera accessible par l'adresse :

http://localhost:8080/

Vous pouvez changer ce numéro de port 8080 par un autre numéro mais utilisez en un supérieur à 1024 car il ne nécessite pas de droits administrateurs.

sidebar

Configurer un nom de domaine dédié à Jobeet

Si vous êtes un administrateur sur votre machine, il est préférable de configurer des serveurs virtuels|Serveurs Virtuels plutôt que d'ajouter un nouveau port à chaque fois que vous démarrez un nouveau projet. Au lieu de choisir un port et d'ajouter une déclaration Listen, choisissez un nom de domaine et ajoutez une instruction ServerName :

# Configuration pour Jobeet
<VirtualHost 127.0.0.1:80>
  ServerName jobeet.localhost
  <!-- même configuration que précédemment -->
</VirtualHost>

Le nom de domaine jobeet.localhost utilisé dans la configuration d'Apache doit être déclaré localement. Si vous utilisez un système Linux, vous devez le faire dans le fichier /etc/hosts. Si vous utilisez Windows XP, ce fichier est situé dans le répertoire C:\WINDOWS\system32\drivers\etc\.

Ajoutez la ligne suivante :

127.0.0.1         jobeet.localhost

Tester la nouvelle configuration

Redémarrez Apache, et vérifiez que vous avez accès à la nouvelle application à partir d'un navigateur en tapant http://localhost:8080/index.php/, ou http://jobeet.localhost/index.php/ cela dépend de la configuration d'Apache que vous avez choisi dans les sections précédentes.

Félicitations

note

Si vous avez installé le module d'Apache mod_rewrite|mod_rewrite (Apache) vous pouvez supprimer la partie index.php/ dans l'URL. Ceci est possible grâce à la réécriture des règles configurées dans le fichier web/~.htaccess|.htaccess (Apache)~.

Vous pouvez également essayer d'accéder à l'environnement de développement de l'application par l'adresse :

http://jobeet.localhost/frontend_dev.php/

La barre d'outils web de débogage doit être présente en haut dans le coin droit, incluant de petites icônes. C'est la preuve que votre alias de configuration sf/ est correct.

La barre d'outils web de débogage

La barre d'outils web de débogage|Barre d'Outils Web de Débogage est présente sur toutes les pages dans l'environnement de développement et vous donne accès à un grand nombre d'informations en cliquant sur les différents onglets : la configuration de l'application actuelle, les journaux pour la requête actuelle, les instructions SQL exécutées sur le moteur de la base de données, les informations sur la mémoire et l'information du temps.

note

L'installation est un petit peu différente si vous voulez exécuter symfony à partir d'un serveur IIS dans un environnement Windows. Vous trouverez comment le configurer dans ce tutoriel.

Subversion

C'est une bonne pratique d'utiliser le contrôle de version des sources lors du développement d'une application web. En utilisant un contrôle de version des sources, cela nous permet de :

  • travailler en toute confiance
  • revenir à une version précédente si un changement casse quelquechose
  • permettre à plusieurs personnes de travailler efficacement sur le projet
  • avoir accès à toutes les versions successives de l'application

Dans cette section, nous décrirons comment utiliser Subversion avec symfony. Si vous utilisez un autre outil de contrôle de code source, il doit être assez facile d'adapter ce que nous décrivons pour Subversion.

Nous supposons que vous avez déjà accès à un serveur Subversion et que vous pouvez y accéder via HTTP.

tip

Si vous ne disposez pas d'un serveur Subversion à votre disposition, vous pouvez créer un dépôt gratuit sur Google Code ou tapez simplement "free subversion repository" dans Google pour avoir beaucoup plus d'options.

Tout d'abord, créer un dépôt pour le projet jobeet sur le serveur de dépôt :

$ svnadmin create /path/to/jobeet/repository

Sur votre machine, créez la structure de répertoires de base :

$ svn mkdir -m "creer la structure de repertoires par defaut" http://svn.example.com/jobeet/trunk http://svn.example.com/jobeet/tags http://svn.example.com/jobeet/branches

Et faites un checkout du répertoire vide trunk/ :

$ cd /home/sfprojects/jobeet
$ svn co http://svn.example.com/jobeet/trunk/ .

Ensuite, supprimez le contenu des répertoires cache/ et log/ car nous ne voulons pas les mettre dans le dépôt.

$ rm -rf cache/* log/*

Maintenant, assurez-vous de mettre les permissions d'écriture sur les répertoires du cache et des journaux aux niveaux appropriés afin que votre serveur web puisse écrire dedans :

$ chmod 777 cache/ log/

Maintenant, importer tous les fichiers et répertoires :

$ svn add *

Comme nous ne voudrons jamais faire de commit des fichiers situés dans les répertoires cache/ et log/, vous devez spécifier une liste à ignorer :

$ svn propedit svn:ignore cache

L'éditeur de texte par défaut configuré dans SVN devrait se lancer. Subversion doit ignorer tout le contenu de ce répertoire :

*

Sauvegardez et quittez. Vous avez terminé.

Répétez la procédure pour le répertoire log/ :

$ svn propedit svn:ignore log

Et entrez :

*

Enfin, valider ces modifications dans le dépôt :

$ svn import -m "fait l import initial" . http://svn.example.com/jobeet/trunk

tip

Les utilisateurs de Windows~ peuvent utiliser l'excellent client TortoiseSVN pour gérer leur dépôt Subversion.

A demain

Bien, c'est fini pour aujourd'hui ! Même si nous n'avons pas encore parlé de symfony, nous avons installé un environnement de développement solide, nous avons parlé des bonnes pratiques de développement web, et nous sommes prêt à coder.

Demain nous révélerons ce que l'application fait et nous parlerons des exigences que nous devons mettre en œuvre durant le tutoriel.

note

Si vous souhaitez vérifier le code pour aujourd'hui, ou pour un autre jour, le code est disponible jour après jour dans le dépôt officiel SVN Jobeet (http://svn.jobeet.org/propel/).

Par exemple, vous pouvez avoir le code d'aujourd'hui en cochant la balise release_day_01 :

  $ svn co http://svn.jobeet.org/propel/tags/release_day_01/ jobeet/