CHARLOIS SIGAUD AGNAN Nils Vincent Diane PROJET 04 - PLATEFORME DE PROJET ZEND ET SYMFONY
Installation de Symfony : Paquet à installer : - php5 - php5-pgsql - postgresql - apache2 Prérequis au niveau des droits : - pouvoir écrire dans le dossier /var/www installation : - récupérer le fichier.zip ou.tar.gz depuis le site du framework.. (J'ai installé la version 1.4 car elle bénificie du LTS ( Long Serm Support ) ) - créer un répertoire qui contiendra le projet ( dans le dossier /var/www/ par exemple, avec les droits ) - créer un répertoire lib contenant un répertoire vendor, et décompresser le zip ( ou tar.gz ) dans le dossier lib/vendor du dossier du projet ( /var/www/nom_du_projet/lib/vendor ) Création d'un projet : - se placer dans le répertoire de votre projet ( cd /var/www/nom_du_projet ) - taper la commande "php lib/vendor/symfony/data/bin/symfony generate:project nom_projet" ( Cette commande créera également un fichier symfony dans le dossier /var/www/ nom_du_projet qui permettra par la suite de taper la commande "php symfony" pour effectuer les autres opérations ) Création d'une application liée à un projet ( plusieurs applications peuvent être regroupées dans un projet ) : - aller dans le répertoire créé pour le projet - taper la commande "php symfony generate:app nom_de_l'appli" ( en général, plusieurs applications sont crées, une pour le front office et une pour le back office ) Fichiers de configuration : au format yml ( YAML ) : 3 catégories de fichiers : - pour tout le projet - pour chaque application - pour chaque module
Lien avec la base de données ( existante ) et ORM : ORM : Technique permettant d'associer une table d'une base de données à une ou plusieurs classes d'un langage orienté objet. Chaque instance de cette classe correspond à un enregistrement de la table et chaque attribut de la classe est un champ de la table. Symfony fournit 2 outils permettant de faire de l'orm, Propel et Doctrine.. Par défaut, Doctrine est utilisé et tend à devenir l'outils ORM officiel de Symfony. ( Attention, le paquet php5-pgsql doit être installé!! Il fournit l'outil permettant à symfony de se connecter à la bdd postgresql ) Fichiers de connexion et schéma de la base de données : Afin d'éditer automatiquement le fichier config/doctrine/shema.yml ainsi que le fichier config/databases.yml, - "php symfony configure:database "pgsql:host=localhost;dbname=nils" nils metafury" - "php symfony doctrine:build-schema" Explications : La première commande permet de modifier le fichier config/databases.yml afin de lui préciser sur quelle base de données nous travaillons ( postgresql en l'occurence ), où la trouver, sur quel port, quel est nom d'utilisateur, le mot de passe, le nom... La 2ème commande est là pour générer le schéma de la base de données utilisée ( relation entre les tables, clé étrangères, contraintes... ) Le schéma décrivant les tables de la base de données est maintenant fait, il faut générer les modèles sur lesquels nous travaillerons par la suite. Voici la commande qui fait cela : "php symfony doctrine:build --model", les modèles sont placés dans le répertoire lib/model/ Ce sont des fichiers php. La commande "php symfony doctrine:build --sql" génère le fichier sql en relation avec le schéma. Ce fichier.sql est placé dans le répertoire data/sql/ et recense les opérations à effectuer afin de créer les tables et les enregistrements. Les types de données : - Les données initiales : Les données initiales sont nécessaires à l'application pour travailler. Par exemple, l'album photo ( projet L3 ) a besoin de quelques catégories initiales. Sinon, personne ne sera en mesure de rajouter une photo. Nous avons également besoin d'un utilisateur administrateur pour être capable de se connecter au backend.
- Les données de test : Elles sont nécessaires pour l'application à tester. Elles permettent de tester le bon fonctionnement de l'application développée. - Les données utilisateur : Crées par les utilisateurs pendant la durée de vie normale de l'application. Les données initiales font donc partie du noyau du projet, elles font parties intégrantes de l'application. L'édition de fichiers au format YAML (.yml ) dans le dossier data/fixtures permettent de décrire les données initiales. Voici un example : # data/fixtures/categories.yml AlbumCategories: animaux: name: Animaux paysages: name: Paysages personnes: name: Personnes # data/fixtures/jobs.yml AlbumUtilisateurs: nils: nom: charlois prenom: nils statut: administrateur url: http://nuklearprojekt.c.la/ location: Avignon, France email: nils.charlois@gmail.com Une fois ces fichiers créés, nous pouvons générer les enregistrements dans les bonnes tables grâce à cette commande : "php symfony doctrine:data-load" Cela aura pour effet de créer 3 enregistrements dans la table categories et 1 enregistrement dans la table utilisateurs pour l'administrateur Les modules Modules Un module est un ensemble autonome de code PHP qui représente une caractéristique de l'application (le module API par exemple), ou un ensemble de manipulations, l'utilisateur peut le faire sur un modèle d'objet. ( cela peut être un module qui gère des rapports d'étudiants par exemple )
php symfony doctrine:generate-module --with-show --non-verbose-templates nom_de_l'application nom_du_module nom_du_modèle Cette commande crée un module, pour l'application nom_de_l'application en s'appuyant sur le modèle nom_du_modèle. Un nouveau répertoire est alors créé à cet emplacement : apps/frontend/modules/ nom_du_nouveau_module/ Et il contient 2 dossiers qui sont actions et templates. Le fichier actions/actions.class.php permet à l'utilisateur d'avoir accés aux actions de base sur un enregistrement ( CRUD ). ( CRUD : Create Read Update Delete sont les 4 opérations de base que l'on peut effectuer sur une table ) Vues et controlleurs Mise en page : Un fichier par défaut présentant un affichage de base ( template ) est présent dans ce dossier apps/frontend/templates/ et s'appelle layout.php Les helpers facilitent grandement la tache, c'est une sorte de bibliothèque permettant d'écrire rapidement du code php en passant par des accélérateurs. Les fichiers css sont présents dans le dossier web/css, les images dans web/images et les javascripts dans web/js Zend VS Symfony Symfony : 4 environnements : Environnement de développement : Environement utilisé par les développeurs web lors du développement des applications pour en ajouter de nouvelles, corriger les bugs,... Environnement de test : Environnement qui test automatiquement les applications. Environnement de qualité : Environnement qui permet aux utilisateurs de tester l'application et d'envoyer des rapports de bug Environnement de production : Environnement final de l'utilisation de la plateforme. Automatisation : Symfony utilise certaines lignes de commande pour automatiser certaines tâches, comme par exemple ; généré les modèles, vues et contrôleur pour créer de nouveaux modules. Ces lignes de commandes sont issues du shell de Linux, qui permet à l'utilisateur de ne pas être dépaysé.
Base de données : Symfony permet d'utiliser n'importe quel gestionnaire de base de données, Zend-Db compris et aussi de gérer la BDD de façon abstraite avec sfdatabase. sfpostgresqldatabase permet d'effectuer les connexions et déconnexions au base de données PostgreSQL. COMPARATIF La force et aussi la faiblesse de Zend est qu'il n'y a pas une façon particulière de développer. Symfony permettrait d'harmoniser le code de chacun en un seul modèle et une implémentation dans une structure bien définie. Opération ZEND SYMFONY Création de Modele/Vue/ Contrôleur Module de Test Module de bug report Création de chacun à la main. Création à la main Création à la main Une ligne de commande permet de les générer automatiquement. Un environnement de Test déjà implémenté Génération de code Presque inexistante Très présente Hiérarchie de dossiers Plugins Très flexible (doit tout parametrer) Inexistants Un environnement appelé "Stagging" qui permet aux utilisateurs de tester l'application et d'envoyer des rapport de malfonctions ("Bug report"). Très stricte mais très propre Large gamme (dont le plugin Zend) Base de données Modele "ActiveRecord" Choix par l'utilisateur Création MVC : Sur Zend il faut déjà connaître les base du MVC pour comprendre et développer sur la plateforme.
Remaniement du MCD