Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Présentation de Symfony ====== Symfony est un framework de développement d'applications PHP dont le but est de simplifier et d'accélérer la création d'applicatifs Web en se basant sur de nombreux scripts d'automatisation ainsi que sur l'utilisation d'un modèle très structuré appelé MVC. ===== Framework kesako? ===== Un framework, ou cadre de développement en français, se dit d'un environnement visant à faciliter le développement d'applications. Il en existe un bon nombre dans la plus part des langages de programmation (Struts pour java, Ruby on Rails pour Ruby, Symfony pour PHP etc). Il s'agit en général d'outils pour automatiser les opérations répétitives, pour structurer l'application, et respecter certaines normes. Ces outils peuvent être des plus basiques au plus complexes allant jusqu'à générer des applications entières sans taper la moindre ligne de code. Dans le framework Symfony, la structure utilisée s'appuie sur le modèle MVC, les scripts sont souvent en PHP et la syntaxe utilisée dans les différents fichiers de configuration est soit en XML soit en YML. ===== MVC kesako? ===== MVC est un modèle ultra répandu surtout en développement web, MVC signifiant Model-View-Controler. Son principal avantage etant de separer les données (partie Modelisation), leur traitement (partie Controleur), et la mise en forme (partie Vue). Quand une page est appelée, le moteur Symfony appele la fonction correspondante du controleur qui va recupèrer et/ou traiter les données, qui passera ensuite tout ça à la partie vue. La partie vue dans beaucoup de framework emploie un langage de template specifique, ce n'est pas le cas de Symfony ce qui est encore un autre avantage. ===== Création d'un projet Symfony ===== La création d'un projet commence par l'utilisation du script permettant de générer toute l'arborescence de votre application. $ symfony init-project monProjet ===== L'arborescence Symfony ===== La commande précédente aura généré les répertoires suivants: apps/ batch/ cache/ config/ data/ doc/ lib/ log/ plugins/ symfony* test/ web/ ==== Le répertoire apps ==== Ce répertoire contiendra les différentes sous sections importantes de votre application, bien souvent un //frontend// et un //backend// (pour l'administration par exemple). Ces sous-sections (app dans Symfony) seront ensuite divisées en modules. On retrouve les contrôleurs dans les modules de vos apps. Comme dit plus haut, une page de votre site sera en fait une action dans un contrôleur d'un de vos modules. Imaginons que votre projet soit un blog, vous aurez donc une app //frontend//, avec un module //article// qui aura par exemple dans sa partie contrôleur une action //lister//, L'URL pourra donc être http://votreserveur/article/lister. L'action //lister// sera en fait une fonction //executeLister()// définie dans le fichier //apps/frontend/modules/article/actions/actions.class.php//. Pour résumer: Navigateur Web => URL => Routing symfony (par défaut ou personnalisé) => App => module => action => view FIXME définition du routing symfony La deuxième étape après avoir créé notre projet consiste à initialiser une application. La commande est la suivant pour créer par exemple l'application //frontend//: $ symfony init-app frontend On créé ensuite nos modules, par exemple le module //article// de notre application //frontend//, avec la commande suivante: $ symfony init-module frontend article ==== Le répertoire batch ==== Ce répertoire peut contenir des fichiers YML pour injecter des jeux de données, pour d'éventuels tests par exemple. ==== Le répertoire cache ==== Répertoire interne servant de cache pour Symfony. ==== Le répertoire config ==== Contient certains fichiers de configuration des différents éléments de Symfony, comme les informations de connexion sur la base de données, le modèle de données (schema.yml ou schema.xml), et d'autres propriétés intéressantes. ==== Le répertoire data ==== FIXME ==== Le répertoire doc ==== FIXME ==== Le répertoire lib ==== FIXME ==== Le répertoire log ==== FIXME ==== Le répertoire plugins ==== Contient les plugins symfony installés pour votre projet. On installe un plugin avec la commande suivante: $ symfony plugin-install <url> Pour voir les plugins installés: $ symfony plugin-list ==== Le répertoire symfony ==== Lien vers le répertoire où se trouve les bibliothèques de Symfony (le répertoire d'installation de Symfony). ==== Le répertoire test ==== Contient d'éventuels tests unitaires. ==== Le répertoire web ==== Ce répertoire contient la racine de votre site Web (DocumentRoot d'Apache). On y trouve le répertoire images, css (fichiers au format CSS) pour la mise en forme de vos pages Web. ====== Installation de Symfony ====== Le plus simple pour installer Symfony est de passer par l'outil PHP pear. L'installation se fait avec les commandes suivantes: # pear channel-discover pear.symfony-project.com # pear install symfony/symfony-1.1.0 Il faut bien sur avoir pear d'installé, sous Fedora le package s'appelle //php-pear//. On peut donc l'installer avec la commande suivante: # yum install php-pear Il est aussi nécessaire d'installer le package //php-xml//: # yum install php-xml ====== Configuration d'un vhost Apache utilisant Symfony ====== La configuration d'Apache pour un virtual host utilisant Symfony est la suivante: <file> <VirtualHost *:80> ServerAdmin root@domaine.com DocumentRoot /var/www/vhosts/www.domaine.com/web/ ServerName www.domaine.com:80 ErrorLog /var/log/httpd/www.domaine.com-error_log CustomLog /var/log/httpd/www.domaine.com-access_log combined <Directory "/usr/share/pear/data/symfony/web/sf"> AllowOverride All Allow from All </Directory> Alias /sf /usr/share/pear/data/symfony/web/sf <Directory "/var/www/vhosts/www.domaine.com/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> </file> ====== Déployer une application Symfony ====== Symfony contient aussi des outils pour faciliter le déploiement de projet Symfony. On peut par exemple packager et déployer un projet Symfony sur une machine où Symfony ne serait pas installé. Il faut utiliser la commande suivante: $ symfony freeze Toutes les bibliothèques utilisées par votre projet seront déplacées dans votre arborescence. Il suffira ensuite de copier le répertoire de votre application sur votre serveur pour que tout fonctionne. Bien sur votre serveur doit quand même disposer de PHP. On peut revenir en arrière avec la commande: $ symfony unfreeze Symfony dispose aussi d'un script permettant de copier votre application sur un serveur distant en utilisant rsync par ssh. Pour cela il faut configurer vos serveur dans le fichier //config/properties.ini// comme suit: <file> [production1] host=myapp.example.com port=22 user=myuser dir=/home/myaccount/myproject/ </file> On teste ensuite avec la commande suivante: $ symfony sync production1 Cette commande lance le rsync avec l'option dry-run pour juste simuler le transfert. On lance la synchronisation avec la commande suivante: $ symfony sync production1 go symfony.txt Dernière modification : 2012/10/30 22:47de 127.0.0.1