Développement d’application web L’architecture
Problématique Comment faire une application qui soit: Facilement maintenable Évolutive Avec une gestion simple du contenu
Solution La séparation des « problèmes » (separation of concerns) Architecture en couches Couche présentation Couche données Couche métier Les couches données et métier ne doivent pas dépendre de la couche présentation
Solution Modèle MVC
Solution Structurer soi-même l’application Utiliser un framework Force à structurer son application Communauté: Toute personne connaissant le framework comprendra plus vite le code de l’application Présence d’extensions et d’aides facilitant la mise en place de certaines tâches récurrentes et rébarbatives Coût d’apprentissage non négligeable
Qui ?
Quel ?
Avantages ? Maintenu, communauté Séparation des couches Modulaire Utilitaires de debug et d’analyse de performances Faciliter les tests …
Ce que nous utiliserons Obligatoire ? Système d’exploitation: Linux Serveur web: Apache2 Framework: Symfony2 SCM: Git Base de données: MySQL
Symfony Composer Twig Doctrine Gestionnaire de dépendances PHP Système de template Doctrine ORM (Object Relational Mapping)
Sources d’information La documentation officielle: http://symfony.com/doc/current/index.html Le forum officiel: http://forum.symfony-project.org/ Google
Symfony: structure
Symfony: app/
Symfony: app/config/
Symfony: src/
Symfony: vendor/
Symfony: web/
Symfony: création d’un bundle
Bundle: ressources
Création de pages Header M E N U Contenu Footer
Création de pages Page 1 Page 2 Page 3 Header Header Header M E N U Contenu M E N U Contenu M E N U Contenu Footer Footer Footer
Création de pages PHP: include Header Contenu M E N U include include Footer
Création de pages header.php
Création de page menu.php
Création de pages footer.php
Création de pages index.php
Création de pages Twig index.html.twig base.html.twig Header MENU Contenu Footer MENU Contenu extends
Création de pages base.html.twig
Création de pages base.html.twig (cont)
Création de pages base.html.twig (cont)
Création de pages Index.html.twig
Questions ?