Beruflich Dokumente
Kultur Dokumente
Rapport de stage
Stage de fin dtudes
Akram JHINGOOR
LYCE CHARLES DE FOUCAULD BTS SIO
JHINGOOR Akram
JHINGOOR Akram
JHINGOOR Akram
Remerciements
Je remercie spcialement M. Ahilan THANGAVADIVEL, qui a t mon tuteur sur lensemble
des deux stages effectu chez Adenis. Je le remercie pour mavoir accept en stage, pour
mavoir partag son exprience professionnelle et avoir eu la patience de recruter un
stagiaire original comme moi.
Je remercie galement Mlle Rihab ABDELHEDI qui ma encadr dans ce stage de fin dtudes
pour mavoir aid dans mon apprentissage du Framework Symfony2, pour ses excellents
conseils de dveloppeurs et pour mavoir support pendant ces 5 semaines.
Je remercie aussi M. Alain ANTISTE pour avoir partag son exprience professionnelle et
mavoir fait comprendre quel point lorganisation et la gestion de projets taient
importants. Je le remercie pour avoir pris le temps de maider dans la prparation de mon
preuve et pour ces prcieux conseils.
Et enfin, je remercie toute lquipe des techniciens, Mervyn, Marie, Giresse, Junior,
Anthony,Rmi, Ghislain, Steeve pour lambiance joviale et leur accueil qui a facilit mon
intgration. Je les remercie tous pour les conseils quils mont donne pour mon projet
professionnel et mon avenir.
JHINGOOR Akram
Introduction
Dans le cadre de mon formation de BTS SIO spcialit SLAM, jai pu effectuer mon stage de
premire anne et de deuxime anne au sein de la socit Adenis. Durant mes stages, jai
pu obtenir une exprience significative pour ma vie professionnelle et apprendre
normment en tant que dveloppeur informatique.
Pendant ces 10 semaines de stage, jai particip deux projets sous le Framework Symfony2
avec le langage PHP. Jai aussi particip des interventions de solutions dinfrastructure
pour des clients de la socit Jai pu obtenir des connaissances en adressage IP, en
installation de solutions matrielles en base de donnes, en gestion de projet et sur le
Framework Symfony2 et Zend.
Je vais prsenter dans ce rapport de stage les diffrentes missions que jai ralis dans le
cadre de mon stage de fin dtudes :
La formation Symfony2 ;
Dune part, je vais prsenter lentreprise dans laquelle jai exerc mes stages et dune autre
part, je vais prsenter les missions de mon stage de fin dtudes.
JHINGOOR Akram
Prsentation de lentreprise :
Prsentation des activits
Adenis est une SSII cre en 1999 par Jerme Benbihi et David Marciano (les actuels
dirigeants). Le sige social est bas Bagnolet, regroupant tous les services : la direction, la
comptabilit, la finance, la gestion de projet et le support. Au dpart, lentreprise se
destinait la vente de matriel informatique et au support technique.
Au fur et mesure, Adenis volue son offre afin daccompagn ses clients, allant du support
technique, de lhbergement jusquau dploiement de lien physique.
Ainsi, Adenis dveloppe une offre de communications unifie (ToIP, trunk SIP, Asterisk...) Il
fournit internet (en partenariat exclusif avec Orange) par diffrents biais soit par le
dploiement de fibre noire, optique ou de solution SDSL 1
Adenis offre galement un service daudit et de conseil en systmes et rseaux. Allant de la
cration darchitectures LAN et WAN, la conception de serveurs et de postes de travails
jusqu leurs intgrations et hbergements.
Stratgie de lentreprise
Adenis applique une politique de niche en ciblant des agences de voyages en leur proposant
des offres de services globales, des accs scuriss et une expertise avance.
JHINGOOR Akram
JHINGOOR Akram
JHINGOOR Akram
Cheminement de la formation
2.1/Contexte de formation
Ds le premier jour, nous avions pris connaissance avec lenvironnement de travail de la
socit sur laspect dveloppement. Les mthodes de travail, lenvironnement logiciel, le
langage principal utilis etc Ayant dj fait mon stage de premire anne chez ADENIS. Jai
dj une certaine connaissance de lenvironnement de travail. Lautre stagiaire dveloppeur
ne connaissait pas Symfony2 et larchitecture MVC* avec le PHP POO. Ainsi, il a donc fallu
former le stagiaire dveloppeur pour quelle puisse se familiariser avec cette technologie. La
formation a donc t organise sous forme de tches pour se positionner sur le SCRUM du
stage.
JHINGOOR Akram
JHINGOOR Akram
Il suffit de passer cette commande pour lentit objet soit crer dans la base de donnes :
php app/console doctrine :schma :update --force
10
JHINGOOR Akram
11
JHINGOOR Akram
Qui dit formulaire dit traitement de donnes. Le traitement du formulaire se fait dans le
contrleur et cest ici mme o on dclare le formulaire.
12
JHINGOOR Akram
13
JHINGOOR Akram
Scuriser une application avec une page de connexion et une page inscription
Comme on peut le remarquer, on est considr comme un utilisateur anonyme.
On va alors crer une page de connexion et une page dinscription pour accder aux
diffrents actions du projet. De ce fait, il nous faut crer une entit User qui rpertorie les
utilisateurs inscrits.
Une fois inscrit, on va pouvoir se connecter lapplication. La scurit sous Symfony2 est
trs pousse, on peut la contrler trs facilement.
La dmarche est simple : On cherche identifier lutilisateur qui accde lapplication et
aprs authentification, on gre laccs lutilisateur en question.
Bon dans ce cas-ci, en sinscrivant, on laisse le choix lutilisation de devenir admin ou
utilisateur.
14
JHINGOOR Akram
Figure 10 - Security.yml
15
JHINGOOR Akram
Partie role_hierarchy
La notion de rle est au centre du processus d'autorisation. On assigne un ou plusieurs
rles chaque utilisateur, et pour accder aux ressources on demande que l'utilisateur ait
un ou plusieurs rles. Ainsi, lorsqu'un utilisateur tente d'accder une ressource, le
contrleur d'accs vrifie s'il dispose du ou des rles requis par la ressource. Si c'est le cas,
l'accs est accord. Sinon, l'accs est refus. Le ROLE_ADMIN hrite du ROLE_USER par
dfaut et le ROLE_SUPER_ADMIN hrite du ROLE_ADMIN et donc du ROLE_USER
Partie encoders
Cette partie de la configuration permet donc de modifier l'encodeur utilis pour vos
utilisateurs, et donc la faon dont sont encods les mots de passe dans votre application. Le
mode encoders utilis ici est le sha512 pour crypter les mots de passes.
Partie providers
Un provider est un fournisseur d'utilisateurs. Les firewalls s'adressent aux providers pour
rcuprer les utilisateurs et les identifier. Dans notre cas, les firewalls chercheront dans
lentit User que lon a dfinie ici.
Partie firewalls
Un pare-feu cherche vrifier que vous tes bien celui que vous prtendez tre. Ici on
dfinit un espace scuris o il faut se connecter pour accder aux diffrentes pages.
Login_path : /loginrenvoie vers la fonction qui va soumettre le formulaire et check path
/login_check vers la fonction qui va vrifier/traiter la demande. La partie pour se
dconnecter est aussi dfini et redirige vers le formulaire de connexion.
Partie access control
Le contrle d'accs (ou access control en anglais) va s'occuper de dterminer si le visiteur a
les bons droits (rles) pour accder la ressource demande.
Ainsi, les niveaux des rles des utilisateurs sont dfinis par lintermdiaire de lentit Rles.
On peut restreindre laccs dune partie du contenu une partie des utilisateurs.
16
JHINGOOR Akram
DEBUG
3.1/ Le principe du dbogage
Les erreurs sont toujours frquentes quand on dveloppe et cela peut arriver tout le
monde mme au meilleur. Les erreurs amnent une recherche de solutions par le
dbogage. Cest le fait d'enlever les erreurs d'un programme, en suivent le droulement de
ce programme afin d'en reprer et corriger les dysfonctionnements. La faute a un pointvirgule, ou bien une mthode mal utilis voir un blocage au niveau du systme.
3.2/ Le dbogage en temps rel
Dans cette partie, nous allons prendre un exemple derreur DEBUG afin de comprendre la
dmarche suivre. Nous allons essayer de crer un client test qui sera associ la
compagnie CompanyTest. De ce fait, soumettre ce cas au formulaire dajout de client du
mini-projet.
17
JHINGOOR Akram
Lors de la validation du formulaire, on peut apercevoir une erreur. Cest fcheux et cest tant
mieux.
Limportance lors dun dbogage est de pouvoir comprendre lerreur affich. Voicilerreur en
question:
The identifier id is missing for a query of Test\Bundle\CeriseBundle\Entity\Client
Juste aprs, nous avons la STACK TRACE qui montre et identifie la possible source du
problme avec la fonction qui renvoie lerreur affich prcdemment. Le deuxime point
nous dit quil y a une erreur quil manque le champ identifiant. Rappelons que lID est gnr
automatiquement par Symfony2.
Il est dcrit que la mthode find de lENTITY MANAGER rcupre un tableau avec les
donnes que lon a rentr dans notre formulaire.
18
JHINGOOR Akram
Figure 13 Erreur
Daprs ce que lon comprend de lerreur, il y aura un problme avec la requte puisquil
manquerait un argument.
Dans le code, on vrifie laide de la mthode findsi lutilisateur est dj prsent dans la
base de donnes. Si ce nest pas le cas, alors on peut linsrer dans la table CLIENT.
Concrtement, lerreur serait ici dans lutilisation de la mthode find.
19
JHINGOOR Akram
La mthode find slectionne une information par une cl primaire. En gros, on donne
lidentifiant et il nous renvoie les informations associes cet identifiant. Comme on a pu le
voir dans le code, on passe en argument un tableau au lieu dun ID.
20
JHINGOOR Akram
Il faut donc trouver une autre mthode pour continuer le traitement. Sachant quon doit
passer un tableau en argument, il sera judicieux dutiliser la mthode findBy qui, lui,
demande un tableau en argument.
Il suffit de remplacer la mthode find par la mthode findBy et hop le tour est jou. Voil,
lajout du client peut se faire.
21
JHINGOOR Akram
Droulement :
On devait installer une vingtaine dordinateurs dans une des agences de SDT. Il avait
command auprs dADENIS des ordinateurs. Les ordinateurs taient configurs chez
ADENIS pour les prparer pour leur installation dans lAgence SDT.
Les ordinateurs commands sont de la marque HP modle ProDesk 400 G1 Desktop Mini PC
Durant linstallation, on doit vrifier si lAgent Adenis est bien prsent sur lordinateur.
Cette Agent Adenis aide la prvention dventuels problmes ou autres soucis techniques
et au bon fonctionnement de lordinateur.
22
JHINGOOR Akram
On peut y voir les machines installes lAgence de SDT avec pour chacun les sessions et
utilisateurs des diffrentes machines.
Toute activit a besoin dtre reprsent sous la forme dun document pour avoir une trace
de celle-ci et pour quil soit compris dautres personnes extrieurs cette activit
(Responsable systme, le directeur informatique, les autres techniciens, le client etc).
Pour rpertorier les ordinateurs installs, on a recens chacun avec leurs informations dans
un document Excel.
23
JHINGOOR Akram
Droulement
Lespace consacr Voyages Masson tait partag par 7 espaces personnels pour chaque
conseiller. Chaque conseiller doit avoir accs la Wi-Fi du Salon et doit avoir la possibilit
dimprimer une fiche de renseignements ou autre document.
Lagence Voyages Masson possde 2 imprimantes pour le salon. Chaque ordinateur devait
aussi avoir accs au module propos par Adenis (contrle distance pour la
tlmaintenance).
Lespace Voyages Masson tait tendu. Nous avons alors regroup les espaces personnels
en 2 secteurs. Chaque secteur dispose dune imprimante. Nous avons install 4 ordinateurs
portables donc le secteur 1 avec limprimante HP LaserJet P2055dn et 3 ordinateurs
portables au secteur 2 avec limprimante HP LaserJet P2015. Un ordinateur est plac
laccueil utilisant le Wi-Fi.
On a utilis les routeurs NETGEAR pour relier les diffrents ordinateurs aux imprimantes de
leurs secteurs respectifs. On paramtre chaque ordinateur sur la plage dadresse IP utilis
pour les imprimantes.
24
JHINGOOR Akram
25
JHINGOOR Akram
26
JHINGOOR Akram
27
JHINGOOR Akram
28
JHINGOOR Akram
29
JHINGOOR Akram
Le Zend Framework est un projet PHP gratuit fourni par la socit Zend. Les objectifs du projet sont
les suivants :
Symfony est un Framework cod en PHP qui va nous permettre de dvelopper une immensit
d'applications web de la plus simple la plus complexe imaginable.
Car en effet, Symfony dfinit un squelette de base respecter, mais dans lequel on peut y mettre
tout le code que l'on souhaite.
30
JHINGOOR Akram
Zend vs Symfony
Zend FrameWork
Le Zend Framework est plus considr
comme une grosse bibliothque de
fonctionnalits plutt qu'un
Framework part entire et n'est pas
trs simple comprendre pour un
dbutant.
Dans sa version 2, il passe rellement
dans la catgorie des Framework avec
une approche trs proche de celle de
Symfony2.
Nanmoins, de solides connaissances
sont aussi prvoir afin d'exploiter
correctement l'outil.
Symfony Framework
Symfony est un Framework qui dispose
d'un bon nombre de briques de base
tout en laissant pas mal de liberts au
dveloppeur.
Cependant, Symfony peut tre dlicat
aborder pour un dbutant s'il n'a pas de
bonnes connaissances en
programmation oriente objet.
Il ncessite une certaine matrise des
technologies web pour en exploiter
toute la puissance du produit.
31
JHINGOOR Akram
32
JHINGOOR Akram
33
JHINGOOR Akram
Le routing :
Une chose importante savoir, Symfony fonctionne grce un systme de route . Cest dire que
chaque fonction cre une route unique, ce qui permet dexcuter la fonction correspondante la
route passe dans lurl. Les routes sont dfinies dans le fichier routing.yml situ dans le dossier
/app/config/ .
Exemple de route dans le fichier routing.yml :
helloworld :
pattern: /hello-world
defaults: {
_controller: TestBundle:Test:hello
}
(Ici, lurl www.monsite.com/hello-world redirige vers la fonction hello du contrleur
TestController du bundle TestBundle ).
Les contrleurs :
Comme dit prcdemment, Symfony respecte le modle MVC et le PHP objet, ainsi le contrleur est
le chef dorchestre de lapplication. Chaque bundle a donc son propre contrleur (cependant, il
nest pas rare de trouver plusieurs contrleurs pour un seul bundle).
Exemple du contrleur TestController :
<?PHP
namespace Test\TestBundle\Controller;
useSymfony\Bundle\FrameworkBundle\Controller\Controller;
useSymfony\Component\HttpFoundation\Response;
JHINGOOR Akram
Les templates :
Symfony2 inclut un moteur de templates, Twig, les vues sont donc gnres grce ce moteur. Les
vues permettent au webdesigner davoir un code plus lisible et de scuriser les variables
automatiquement.
Exemple de la vue hello.html.twig :
<!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
</head>
<body>
<h1>{{ hello }}</h1> // Affichage du contenu de la variable $hello
</body>
</html>
Doctrine :
Doctrine est, contrairement Composer, intgr par dfaut dans Symfony. Doctrine est un ORM
(Object Relation Manager), son but est donc de permettre lutilisateur de communiquer avec une
base de donnes au travers dobjets (crs grce au PHP) sans avoir besoin dcrire les requtes
(requtes MySql, par exemple). Doctrine permet aussi la cration dentits. Elles pourront tre
utilises comme objet en PHP et Doctrine se sert de ces entits pour gnrer la base de donner
automatiquement (une entit = un table dans la base de donnes).
Sources
http://symfony.com/fr/what-is-symfony
https://fr.wikipedia.org/wiki/Symfony
https://openclassrooms.com/courses/developpez-votre-site-web-avec-le-frameworksymfony2/symfony2-un-framework-php
35
JHINGOOR Akram
Conclusion
Durant mes dbuts dans la socit, je ntais pasassez entreprenant et je travaillais de mon ct. Au
fur et mesure des jours, toute lquipe a su faciliter mon intgration. Cela ma permis de collaborer
avec les autres. Jai pris conscience que le travail dquipe tait essentiel pour un cadre propice au
travail. Jai rencontr des personnes ayant un vcu professionnel et humain qui ma donn une ide
du mtier de dveloppeur et de travailler dans une socit.
Je suis satisfait de mon stage puisque jai pu apporter mes connaissances mais surtout apprendre
normment sur les technologies utilises en entreprise et sur le march du travail.
Jai franchi un cap dans mon projet professionnel et jai une meilleure perception de ce que je
voudrais faire plus tard.
Jespre pouvoir faire une formation en alternance avec une entreprise et pourquoi ne pas
renouveler laventure avec Adenis.
36