3. Note d'opportunité








télécharger 155.16 Kb.
titre3. Note d'opportunité
date de publication06.07.2017
taille155.16 Kb.
typeNote
ar.21-bal.com > droit > Note
SOMMAIRE




Contexte technologique : SYMFONY2

1. Mise en œuvre de la technologie visée :

  • Comment se procurer les composants nécessaires (téléchargement, éditeur, ...)

  • Installations nécessaires (liens, versions, plate-formes, …)

  • Exemples de mise en œuvre (liens, codes, …)

2. Contexte organisationnel et financier

  • Adaptations nécessaires : intégration de l'existant, administration, utilisation, …

  • Evaluation de l'investissement nécessaire : coût des licences, formations,

3. Note d'opportunité

  • État de l'art en dehors de cette technologie : comment procède-t-on sans cela...

  • Avantage et inconvénients de la technologie visée dans ce contexte

  • Technologies concurrentes

  • Intérêt concernant le ou les projets futurs

  • Evolution du Framework


Contexte technologique :

Définition d’un Framework


Un framework est un ensemble de composants qui servent à créer les fondations, l'architecture et les grandes lignes d'un logiciel. Plus précisément est une boite à outils conçue par un ou plusieurs développeurs et à destination d'autres développeurs. Contrairement à certains scripts tels que Wordpress, DotClear ou autres, un framework n'est pas utilisable tel quel. Il n'est pas fait pour être utilisé par les utilisateurs finaux. Le développeur qui se sert d'un framework doit tout de même se concentrer sur la forme du développement

Qu'est-ce que Symfony2 ?


Symfony2 est un framework PHP francais utilisé dans des entreprises du monde entier donc la première version est sortie en 2005 .Il est édité par la société SensioLabs, dont le créateur est Fabien Potencier. Mais Symfony2 étant un script open source, il a également été écrit par toute la communauté : beaucoup de Français, mais aussi des développeurs de tout horizon : Europe, États-Unis, etc.



1. Mise en œuvre de la technologie visée :




  • Ou se procurer les composants nécessaires ?

Rendez-vous sur le site de Symfony2, rubrique « Download » : http://symfony.com/download, et téléchargez la version "Symfony Standard (.zip)".

Une fois l'archive téléchargée, décompressez les fichiers dans votre répertoire web habituel, par exemple "C:\wamp\www" pour Windows ou "/var/www" pour Linux.

  • Installations nécessaires (liens, versions, plates-formes, …)

Vérifier votre configuration de PHP

Symfony2 a quelques contraintes par rapport à votre configuration PHP. Par exemple, il ne tourne que sur la version 5.3.2 ou supérieure de PHP. Pour vérifier si votre environnement est compatible, rendez-vous à l'adresse suivante : http://localhost/Symfony/web/config.php.

En cas d'incompatibilité (version de PHP notamment), Symfony2 vous demande de régler les problèmes avant de continuer. S'il ne vous propose que des « recommandations », vous pouvez continuer sans problème. Ce sont des points que je vous conseille de régler, mais qui sont facultatifs.

Vous pouvez dès à présent exécuter Symfony2. Rendez-vous sur la page http://localhost/Symfony/web/app_dev.php pour accéder à la page d’accueil de SYMFONY2.

  • Exemples de mise en œuvre (liens, codes, …)

Parties les plus importantes du tutoriel du SiteDuZéro :  

Liste des répertoires


Le répertoire app/

Il contient la configuration, le cache, les fichiers logs, etc. Ce sont des fichiers qui concernent l'entièreté de votre site, contrairement aux fichiers de code source qui seront découpés par fonctionnalités de votre site.

Dans Symfony2, un projet de site internet est une application, simple question de vocabulaire. Le répertoire app/ est donc le raccourci pour application.

Le répertoire src/

Il contient le code source de l’application. Dans ce répertoire, nous organiserons notre code en "bundles", des briques de notre application, dont nous verrons la définition plus loin.

Le répertoire vendor/

Ce répertoire contient toutes les librairies externes à notre application. Dans ces librairies externes, on inclut Symfony2 ! Vous pouvez parcourir ce répertoire, vous y trouverez des librairies comme Doctrine, Twig, SwiftMailer, etc.

Le répertoire web/

Ce répertoire contient tous les fichiers destinés à vos visiteurs : images, fichiers CSS et JavaScript, etc. Il contient également le contrôleur frontal (app.php).

C'est le seul répertoire qui devrait être accessible à vos visiteurs.

Le contrôleur frontal

Deux environnements de travail

Il offre plusieurs environnements de travail :

  • L'environnement de développement, appelé « dev », accessible en utilisant le contrôleur frontal app_dev.php. C'est l'environnement que l'on utilisera toujours pour développer.

  • L'environnement de production, appelé « prod », accessible en utilisant le contrôleur frontal app.php.

En cas d’erreur le mode « prod » nous dit juste « page introuvable » alors que le mode « dev » nous donne plein d'informations sur l'origine de l'erreur, indispensables pour la corriger.

Les erreurs côtés utilisateurs sont stockées dans app/logs/prod.log.

Symfony2 et ses bundles

La découpe en « bundles »

Symfony2 utilise un concept innovant qui consiste à regrouper dans un même endroit, le bundle, tout ce qui concerne une même fonctionnalité. Cette organisation permet de découper naturellement nos fonctionnalités, et ainsi de ranger chaque fichier à sa place.

Un bundle Blog, qui va fournir une interface pour gérer un blog sur le site. Ce bundle peut utiliser le bundle Membre pour faire un lien vers les profils des auteurs des articles et des commentaires.

Et ces bundles, parce qu'ils respectent des règles communes, vont fonctionner ensemble. Par exemple, un bundle « Forum » et un bundle « Utilisateur » devront s'entendre : dans un forum, ce sont des utilisateurs qui interagissent. ;)

En plus d'organiser votre code par fonctionnalités, la découpe en bundles permet l'échange de bundles entre applications ! Cela signifie que vous pouvez développer une fonctionnalité, puis la partager avec d'autres développeurs ou encore la réutiliser dans un de vos autres projets. Et bien entendu, cela marche dans l'autre sens : vous pouvez installer dans votre projet des bundles qui ont été développés par d'autres !

Le principe même des bundles offre donc des possibilités infinies ! Imaginez le nombre de fonctionnalités classiques sur un site internet, que vous n'aurez plus à développer vous-mêmes.

Presque tous les bundles de la communauté Symfony2 sont regroupés sur un même site : http://knpbundles.com/.

Un bundle contient tout : routes, contrôleurs, vues, modèles, classes personnelles, etc.

Utilisation de la console

Créer un bundle

Il faut dans un premier temps exécuter la commande php app/console generate:bundle.

Puis définir le namespace du bundle. Par convention, on le compose de trois parties

  1. Pseudo, le nom de votre site ou ce que vous voulez ;

  2. Nom du bundle en lui-même : il définit ce que fait le bundle;

  3. « Bundle » est le suffixe obligatoire;

Le nom du bundle est par convention celui du namespace, sans les slashes.

La destination du bundle est celle par défaut. C’est à dire src/

Le format du bundle est à définir et il gère simplement le format de la configuration. Il existe plusieurs moyens comme vous pouvez le voir : Yaml, XML, PHP ou Annotations.

Le Yaml (yml) est souvent utilisé pour les bundles.

Ensuite il suffit de demander de générer et tout accepter pour que le bundle soit créé.

Symfony2 a enregistré notre bundle auprès du Kernel

Pour qu'un bundle soit opérationnel il faut :

  • Son code source, situé dans src/Application/Bundle, et dont le seul fichier obligatoire est la classe à la racine SdzBlogBundle.php

  • Enregistrer le bundle dans le noyau pour qu'il soit chargé, en modifiant le fichier app/AppKernel.php

  • Enregistrer les routes (si le bundle en contient) dans le Routeur pour qu'elles soient chargées, en modifiant le fichier app/config/routing.yml

Créons notre route

Le routeur (ou « router ») ? Une route ?

Objectif

L'objectif du routeur est de dire à Symfony2 ce qu'il doit faire lorsque que l'on appelle l'URL /hello-world (par exemple). Nous devons donc créer une route qui va dire : « lorsque l'on est sur l'URL /hello-world, alors on appelle le contrôleur « Blog » qui va afficher un Hello World. ».

Les routes se définissent dans un simple fichier texte, que Symfony2 a déjà généré pour notre SdzBlogBundle. Usuellement, on nomme ce fichier Resources/config/routing.yml dans le répertoire du bundle. Ouvrez le fichier, et rajoutez cette route à la suite de celle qui existe déjà :

Créer un fichier de routes

# src/Sdz/BlogBundle/Resources/config/routing.yml

HelloTheWorld:

pattern:  /hello-world

defaults: { _controller: SdzBlogBundle:Blog:index }

➥L’indentation se fait avec 4 espaces et non des tabulations dans les fichiers .yml

➥Si vous rencontrez une erreur lors d’un copier-coller, pensez à bien définir l'encodage du fichier en "UTF-8 sans BOM" et à supprimer les éventuels caractères non désirés.

Essayons de comprendre rapidement cette route :

  • Le "HelloTheWorld" est le nom de la route. Il doit être unique ;

  • Le "pattern" correspond à l'URL à laquelle nous souhaitons que notre hello world soit accessible.

  • Le "defaults" correspond aux paramètres de la routes, dont :

    • Le "_controller", qui correspond à l'action (ici, "index") que l'on veut exécuter et au contrôleur (ici, "Blog") que l'on va appeler (un contrôleur peut contenir plusieurs actions, c'est à dire plusieurs pages).

La valeur donnée au _controller : « SdzBlogBundle:Blog:index ». Cette valeur se découpe en suivant les pointillés les deux-points (« : ») :

  • « SdzBlogBundle » est le nom de notre bundle, celui dans lequel Symfony2 ira chercher le contrôleur ;

  • « Blog » est le nom du contrôleur à ouvrir. En terme de fichier, cela correspond à controller/BlogController.php dans le répertoire du bundle. Dans notre cas, nous avons src/Sdz/BlogBundle/controller/BlogController.php comme chemin absolu.

  • « index » est le nom de la méthode à exécuter au sein du contrôleur.

Les routes permettent à notre bundle d'être indépendant : si plus tard nous ajoutons, modifions ou supprimons des routes dans notre bundle, nous ne toucherons qu'au fichier src/Sdz/BlogBundle/Resources/config/routing.yml au lieu de app/config/routing.yml.

Créons notre contrôleur

1. Le fichier de notre contrôleur « Blog »

Dans un bundle, les contrôleurs se trouvent dans le répertoire Controller du bundle.

Le nom des fichiers des contrôleurs doit respecter une convention très simple : il doit commencer par le nom du contrôleur, ici « Blog », suivi du suffixe « Controller ». Au final, on doit donc créer le fichier src/Sdz/BlogBundle/Controller/BlogController.php.

Même si Symfony2 a déjà créé un contrôleur DefaultController pour nous, ce n'est qu'un exemple, on va utiliser le notre. Ouvrez donc notre BlogController.php et collez-y le code suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13


namespace Sdz\BlogBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class BlogController extends Controller
{
   public function indexAction()
   {
       return new Response("Hello World !");
   }
}


Allez voir sur http://localhost/Symfony/web/app_dev.php/hello-world  Même bundle mais contrôleur différent.

Maintenant, essayons de comprendre rapidement ce fichier :

  • ligne 1 : on se place dans le namespace des contrôleurs de notre bundle.

  • ligne 4 : notre contrôleur hérite de ce contrôleur de base. Il faut donc le charger grâce au « use » ;

  • ligne 5 : notre contrôleur va utiliser l'objet Response, il faut donc le charger grâce au « use » ;

  • ligne 7 : le nom de notre contrôleur respecte le nom du fichier pour que l'autoload fonctionne ;

  • ligne 9 : on définit la méthode indexAction(). N'oubliez pas de mettre le suffixe « Action » derrière le nom de la méthode ;

  • ligne 11 : l'argument de l'objet Response est le contenu de la page que vous envoyez au visiteur, ici « Hello World ! ». Puis on retourne cet objet.

Utiliser Twig avec Symfony2

Créons le fichier du template

Le répertoire des templates (ou vues) d'un bundle se trouve dans le dossier "Resources/views". Créons notre propre répertoire "Blog" et créons notre template"index.html.twig" dans ce répertoire. Nous avons donc le fichier "src/Sdz/BlogBundle/Resources/views/Blog/index.html.twig".

Blog/index.html.twig ? Découpons ce nom :

  • Blog/ est le nom du répertoire. Nous l'avons appelé comme notre contrôleur afin de nous y retrouver (ce n'est pas une obligation, mais c'est fortement recommandé) ;

  • index est le nom de notre template qui est aussi le nom de la méthode de notre contrôleur (idem, pas obligatoire, mais recommandé) ;

  • html correspond au format du contenu de notre template. Ici, nous allons y mettre du code HTML. Cela permet de mieux s'y retrouver ;

  • twig est le format de notre template. Ici, nous utilisons Twig comme moteur de template, mais il est toujours possible d'utiliser des templates PHP.

Revenez à notre template et copiez-collez ce code à l'intérieur :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16




   
       </b>Bienvenue sur ma première page avec le Site du Zéro !<b>
   
   
       

Hello World !



       

           Le Hello World est un grand classique en programmation.
           Il signifie énormément, car cela veut dire que vous avez
           réussi à exécuter le programme pour accomplir une tâche simple :
           afficher ce hello world !
       

   

similaire:

3. Note d\14. Note d’opportunité 12

3. Note d\6. Note d’opportunité 7

3. Note d\1. Synopsis: Nouvelle opportunité pour le territoire?

3. Note d\Fiche service etude d’opportunité du Lean en services it

3. Note d\J. F. Hamelin gouverneur 2011. 2012
«Pays des mille sourires». J’invite particulièrement les Rotariens qui ne sont jamais venus en Asie à saisir cette opportunité. Même...

3. Note d\Note de l’éditeur Science et perception dans Descartes
«Pourrez~vous former un plan de travail ?» Un large extrait de cette lettre d'Alain est cité dans la «Note de l'éditeur» qui se trouve...

3. Note d\Kairon-amitie visite le musee richard anacreon
«…je sais gré à tous ceux qui ont contribué à cette belle présentation de m’avoir offert l’opportunité d’un nouveau contact avec...

3. Note d\Sommaire
«emplois d’avenir» en ce sens. En contrepartie, le Conseil général aide toutes les associations qui souhaitent embaucher ces jeunes....

3. Note d\Attribution de la commande de matériel électronique d’Eurotunnel à microsens
«Pour microsens et euromicron, cette commande représente une excellente opportunité d’affirmer la capacité du groupe à apporter des...

3. Note d\Portail Evaluation Economique des Biens environnementaux
«avantages» tirés de projets de développements économiques dans le cadre d’analyses «coûts-avantages» (A. C. A.) ou «coûts-bénéfices»...








Tous droits réservés. Copyright © 2016
contacts
ar.21-bal.com