Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
symfony [2008/05/28 13:37] – orthographe madko | symfony [2012/10/30 22:47] (Version actuelle) – modification externe 127.0.0.1 |
---|
| |
===== Framework kesako? ===== | ===== Framework kesako? ===== |
Un framework, ou cadre de developpement en français, se dit d'un environnement visant à faciliter le developpement d'application. 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). | 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 general 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'a générer des applications entieres sans taper la moindre ligne de code. | 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 differents fichiers de configuration est soit en XML soit en YML. | 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 kesako? ===== |
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. | 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. |
| |
===== Creation d'un projet Symfony ===== | ===== Création d'un projet Symfony ===== |
La création d'un projet commence par l'utilisation du script permettant de generer toute l'arborescence de votre application. | 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 | $ symfony init-project monProjet |
| |
===== L'arborescence Symfony ===== | ===== L'arborescence Symfony ===== |
La commande précedente aura généré les répertoires suivants: | La commande précédente aura généré les répertoires suivants: |
apps/ | apps/ |
batch/ | batch/ |
web/ | web/ |
| |
==== Le repertoire apps ==== | ==== Le répertoire apps ==== |
Ce repertoire contiendra les differentes 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. | 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 controleurs dans les modules de vos apps. | 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 controleur 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 controleur une action lister, l'url pourra donc etre 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//. | 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 resumer: Navigateur web => URL => Routing symfony (par defaut ou personnalisé) => App => module => action => view | Pour résumer: Navigateur Web => URL => Routing symfony (par défaut ou personnalisé) => App => module => action => view |
| |
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'appli frontend: | 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 | $ symfony init-app frontend |
| |
On créé ensuite nos modules, par exemple le module article de notre appli frontend, avec la commande suivante: | On créé ensuite nos modules, par exemple le module //article// de notre application //frontend//, avec la commande suivante: |
| |
$ symfony init-module frontend article | $ symfony init-module frontend article |
| |
==== Le repertoire batch ==== | ==== Le répertoire batch ==== |
Ce repertoire peut contenir des fichiers YML pour injecter des jeux de données, pour d'eventuels tests par exemple. | Ce répertoire peut contenir des fichiers YML pour injecter des jeux de données, pour d'éventuels tests par exemple. |
| |
==== Le repertoire cache ==== | ==== Le répertoire cache ==== |
Repertoire interne servant de cache pour Symfony. | Répertoire interne servant de cache pour Symfony. |
| |
==== Le repertoire config ==== | ==== 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 interessantes. | 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 repertoire data ==== | ==== Le répertoire data ==== |
==== Le repertoire doc ==== | |
==== Le repertoire lib ==== | FIXME |
==== Le repertoire log ==== | |
==== Le repertoire plugins ==== | ==== Le répertoire doc ==== |
Contient les plugins symfony installé pour votre projet. On installe un plugin avec la commande suivante: | |
| 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> | $ symfony plugin-install <url> |
$ symfony plugin-list | $ symfony plugin-list |
| |
==== Le repertoire symfony ==== | ==== Le répertoire symfony ==== |
Lien vers le repertoire où se trouve les bibliothèques de Symfony (le repertoire d'installation de Symfony). | Lien vers le répertoire où se trouve les bibliothèques de Symfony (le répertoire d'installation de Symfony). |
| |
==== Le repertoire test ==== | ==== Le répertoire test ==== |
Contient d'eventuels tests unitaires. | Contient d'éventuels tests unitaires. |
| |
==== Le repertoire web ==== | ==== Le répertoire web ==== |
Ce repertoire contient la racine de votre site web (DocumentRoot d'Apache). On y trouve le repertoire images, css pour la mise en forme de vos pages 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 ====== | ====== 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: | 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 channel-discover pear.symfony-project.com |
# pear install symfony/symfony | # 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: | 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 | # 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 ====== | ====== Configuration d'un vhost Apache utilisant Symfony ====== |
</file> | </file> |
| |
====== Deployer une application Symfony ====== | ====== Déployer une application Symfony ====== |
Symfony contient aussi des outils pour faciliter le deploiement de projet Symfony. | Symfony contient aussi des outils pour faciliter le déploiement de projet Symfony. |
| |
On peut par exemple packager et deployer un projet Symfony sur une machine où Symfony ne serait pas installé. Il faut utiliser la commande suivante: | 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 | $ symfony freeze |
| |
Toutes les bibliothèques utilisées par votre projet seront deplacées dans votre arborescence. Il suffira ensuite de copier le repertoire de votre application sur votre serveur pour que tout fonctionne. Bien sur votre serveur doit quand meme disposer de php. | 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: | On peut revenir en arrière avec la commande: |