Partage

Cours Architecture PHP professionnelle / Questions

6 février 2015 à 10:46:57

Bonjour à tous et bienvenue à tous ceux qui participent au cours "Évoluez vers une architecture PHP professionnelle" !

Adresse du cours : http://openclassrooms.com/courses/evoluez-vers-une-architecture-php-professionnelle

Ce cours de 4 semaines sera ouvert dès le 10 février 2015.

Je vous invite à poster vos questions sur le cours ici. J'essaierai de répondre régulièrement, mais n'hésitez pas à discuter entre vous et à vous entraider. 

À bientôt ! 

Baptiste

Historique

Septembre 2015 : mise à jour.

  • Ciblage de Silex 1.3 et Symfony 2.7 pour éviter d'éventuelles futures incompatibilités (comme entre Silex 1.2 et Symfony 2.6).
  • Nommage systématique des routes.
  • Prise en compte des changements dans le composant security depuis Symfony 2.6. L'accès aux permissions et à l'utilisateur connecté ont été modifiés dans les vues et les contrôleurs.
  • Ajout de HttpFragmentServiceProvider pour réparer le web-profiler.
  • Correction de coquilles diverses.
Février 2015 : version initiale

Questions fréquentes sur le cours

  • itération 3 : l'URL http://microcms ne fonctionne pas

Il s'agit probablement d'un souci dans la définition de l'hôte virtuel microcms. Le cours Premiers pas avec le framework PHP Silex, et notamment sa partie "Simplification des URL", décrit toutes les étapes nécessaires pour créer un hôte virtuel sous Apache. 

  • Itération 4 et suivantes : j'obtiens une erreur de type "ClassNotFoundException".

Il s'agit d'un problème de chargement des classes définies dans le répertoire src. Pour que ces classes soient chargées automatiquement, il faut qu'elles soient définies dans le bon répertoire avec le bon espace de noms (exemple : namespace MicroCMS\DAO;) au début du fichier source. N'oubliez pas que vous pouvez consulter le code source de chaque itération sur GitHub.

Il faut également que le fichier composer.json contienne exactement les lignes suivantes.

"autoload": {
    "psr-4": {"MicroCMS\\": "src"}
}

Enfin, il faut avoir lancé la commande composer update une fois le fichier composer.json correct.

  • Itération 7 : l'accès à un article produit une erreur de type "The requested URL /article/1 was not found on this server."

La redirection d'URL ne se fait pas comme prévu. Soit le fichier .htaccess nécessaire n'est pas présent dans le répertoire web de l'application, soit le module de réécriture d'URL mod_rewrite n'est pas activé dans la configuration d'Apache.

  • Itération 8 : erreur "ClassNotFoundException : attempted to load class Firewall..."

C'est un problème de chargement de classe. Lien vers la solution.

  • Itération 8 : erreur "Class Request does not exist".

Il manque une instruction use dans le fichier app.php. Lien vers la solution.

  • Itération 10 : il est possible d'ajouter un nouvel utilisateur en saisissant deux mots de passe différents lors de sa création.

Le code source de l'application MicroCMS n'est pas en cause. Ce problème est lié à un bogue apparu dans la version 2.6 du composant validator de Symfony et corrigé en version 2.6.4.

  • Itération 11 : erreur de timezone.

Il faut décommenter la ligne date.timezone dans le fichier php.ini. Lien vers la solution.

  • Itération 12 : après avoir ajouté le décodeur JSON dans le fichier app.php, j'obtiens une erreur de type "Argument 1 must be an instance of Request, Symfony\Component\HttpFoundation\Request given".

Il manque une directive use dans le fichier app.php. Lien vers la solution.

Questions fréquentes sur l'activité 1

  • Comment gérer le lien entre un livre et son auteur ?

Il existe plusieurs possibilités. La plus "orientée objet" consiste à ajouter une propriété $author (et non $authorId) à la classe Book. La propriété $author est un objet de la classe Author, et non un simple identifiant d'auteur de type entier. Ainsi, on peut obtenir le code suivant pour la vue Twig.

{% extends "layout.html.twig" %}
 
{% block title %}{{ book.title }}{% endblock %}
 
{% block content %}
<p>
    <h2>{{ book.title }}</h2>
    <ul>
        <li>Auteur : {{ book.author.firstName }} {{ book.author.lastName }}</li>
        <li>ISBN : {{ book.isbn }}</li>
    </ul>
    <p>{{ book.summary }}</p>
</p>
{% endblock %}



-
Edité par bpesquet 15 septembre 2015 à 14:28:55

Vous êtes demandeur·se d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur·se web junior

Je postule
Formation
courte
Financée
à 100%
10 février 2015 à 19:21:47

Bonjour,

pourra-t-on aborder dans ce cours la coexistence d'application "old-fashion"  non MVC écrites en procédural avec Silex?

Je pense que c'est un gros frein à l'introduction des FrameWork qui sont parfait lorsqu'on part de zéro :) mais très peu explicite pour la coexistence et une migration progressive.

Bien sûr on peu toujours créer un répertoire particulier et avoir des url du type http://www.monsite.com/silex/  mais c'est quand même très pauvre pour les évolutions ultérieures.

...bon je retourne au cours ...qui est de toute façon très intéressant.

12 février 2015 à 16:06:12

bonjour!

je voulais juste savoir comment peux-ton activer "php_openssl.dll" pour que le programme Composer du framework silex de php puisse bien  fonctionner car je suis bloquer avec TP dans l'architecture MVC

Jospin Amisi
12 février 2015 à 17:56:56

Bonjour,

J’ai bien suivi la partie « Itération 3 : intégration du framework PHP Silex » ainsi quel’exemple de  « Premiers pas avec le framework PHP Silex» (plusieurs essais ).

Mais quand je tape l’adresse http://microcms/ il me met adresse inconnu ou me redirige sur une page microcms.com. pour afficher la liste des articles je suis obligé de passer par : http://localhost/microcms/web/ . Est ce que ça arrive qu’à moi et quelqu’un pourrait-il me dire ou j’ai merdé ?

Merci du temps que vous passerez à trouver ma solution.

12 février 2015 à 22:02:46

Bonjour,

J'ai rencontré le même problème que gilles883.

J'ai appliqué à la lettre la modification des deux fichiers. Mais en cherchant bien, j'ai trouvé que la ligne suivante était en commentaire dans le fichier C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

En enlevant le commentaire, ça fonctionne.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf


A noter que je suis sous Windows avec WAMP, donc ce n'est peut-être pas la solution à ton problème.

12 février 2015 à 22:11:33

Bonjour,

Je vous souhaite a tous du succès et vous dit que pour moi sa ne commence pas très bien. J'en suis a l'itération #3 et tout allais bien avant l'installation du framework Silex.

J'ai pris le fichier .zip sur le site (http://silex.sensiolabs.org/download) et j'ai installer ces fichier dans le dossier ou je fait la programmation pour le cours. Je demande si l'un de vous as fait la même erreur que moi et si l'un de vous peut me dire simplement pourquoi ce fichu message.

«Sorry, the page you are looking for could not be found.»

Je doit avouer que je n'ai pas tout essayer mais j'en serai bientôt la. J'ai installer Apache2.2.22/PHP5.4.3/MySQL5.5.24 (WAMPSERVER). Et tout fonctionne bien excepté le Framework Silex fraîchement installer.

Je vais faire un test sur mon Serveur ou je programme pour une entreprise et voir si Silex fonctionne la mais d'ici la si vous avez résolu ce problème et vous pouvez me dire pourquoi ce Crash de page Non trouvé! Sa serais très convenant!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Ce n'étais pas pour déranger mais en 10 minutes sa fonctionne, cette fois avec composer et un peut de patience.

C'étais trop étrange j'ai tout recommencer. Donc si sa vous arrive ne me demandez pas comment ont règle sa. Je ne le sais point. Même code mais pas la même installation (Fichier identique). Je ressent la même émotion qu'as mes début en Programmation. Merci au prof pour l'émotion.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Désolé de l'insignifiance de mon Post! Mais je vient de voir dans les backup que mes dossier étais mal placé, un dossier en trop quoi. C'est pas possible ce que les docteur peuvent me prescrire, a me voir allé il vont causer ma perte. Bonne chance dans vos développement!

-
Edité par wfblake724 12 février 2015 à 23:20:25

Évolué dans l'éducation comme vous l'avez souhaitez... Ne vous laissé pas atteindre par des pensée non songé...
12 février 2015 à 22:26:04


# Virtual hosts
# Include conf/extra/httpd-vhosts.conf

En enlevant le commentaire, ça fonctionne.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf


A noter que je suis sous Windows avec WAMP, donc ce n'est peut-être pas la solution à ton problème.

l idée me paressait bonne mais quant je modifies cette ligne wamp ne veut plus tourner correctement



-
Edité par gilles883 12 février 2015 à 22:26:44

13 février 2015 à 0:44:02

Bonjour, jospinamissi...

Pour activer php_openssl.dll, ouvre ton fichier de configuration PHP (php.ini) situer dans le dossier de tes exécutable PHP.

Trouve la ligne ou est inscris «;extension=php_openssl.dll» et retire le point virgule... comme ceci «extension=php_openssl.dll»

Pour moi cela a fonctionner. J'ai ensuite installer Composer et régler mon problème avec mes dossier mal fichu de PHP Silex.

-
Edité par wfblake724 13 février 2015 à 0:44:43

Évolué dans l'éducation comme vous l'avez souhaitez... Ne vous laissé pas atteindre par des pensée non songé...
13 février 2015 à 16:27:17

Bonjour,

Manifestement, on a tous des soucis. 

Je n'arrive pas à faire fonctionner le vhost (même après avoir suivi les infos ci-dessus). Est-ce utile pour la suite du cours ?

J'ai cette erreur qui apparaît. Mais comme je ne suis pas habitué à la POO et aux namespace , je suis un peu perdu.

ClassNotFoundException: Attempted to load class "ArticleDAO" from namespace "MicroCMS\DAO" in C:\webserver\www\MicroCMS\app\app.php line 15. Do you need to "use" it from another namespace?

Merci pour votre aide.

-
Edité par Ghinzu 13 février 2015 à 16:31:02

13 février 2015 à 16:55:40

Slt,

Effectivement je vois que l'on est pas mal à ramer sur des détails depuis le début, et vu qu'il n'y a aucun support pour nous aider...

Bref j'ai décider d'arrêter, je reprendrai quand des réponses seront données, et puis seuls les dernières partie m'intéresses.

Bonne chances à tous.

13 février 2015 à 18:10:55

Bonjour à tous,

voilà, je viens de terminer la première partie du cours, mais j'ai un problème avec la configuration de l’hôte virtuel.

J'ai édité le fichier de configuration Apache httpd-vhosts.conf avec le même code que dans le cours ( en modifiant les lignes DocumentRoot et Directory avec: "Applications/MAMP/htdocs/MicroCMS/web" je suis sous mac osx), j'ai ajouté l'hôte virtuel localhost comme demandé mais lorsque je test la page, j'arrive sur la page Index of/ et lorsque je clique sur MicroCMS, dans l'arborescence je n'ai pas le dossier "web" et je ne peux pas tester ma page.

Je vous remercie d'avance pour votre aide.



Anonyme
13 février 2015 à 18:28:20

Professionnel de quoi ?

Je viens de jeter un coup d'oeil rapide sur la partie:

ITÉRATION 13 : RÉORGANISATION DES CONTRÔLEURS

Et qu'est ce que je vois ? Des contrôleurs blindés de logique. '-'

13 février 2015 à 23:43:58

Salut !

gilles883 a écrit:

[…] l idée me paressait bonne mais quant je modifies cette ligne wamp ne veut plus tourner correctement

Montre-nous le contenu de ton fichier httpd-vhosts.conf, il doit y avoir une petite erreur dans son contenu.

Sinon, n'oubliez pas la FAQ PHP ainsi que le tutoriel sur WAMP (vous y trouverez notamment des informations à propos de WAMP, des instructions sur les hôtes virtuels, un peu de paramétrage de PHP, et comment faire pour pouvoir utiliser PHP en ligne de commandes) – les liens sont dans ma signature

-
Edité par Ymox 4 février 2017 à 3:09:55

14 février 2015 à 17:32:53

Salut tout le monde,

je n'arrive pas à soumettre mon quiz depuis tout à l'heure. Je voudrais savoir si quelqu'un a rencontré le même problème que moi lors de la soumission du travail !

14 février 2015 à 17:41:10

perso je n'ai même pas accès au quizz donc...

Attends un petit moment et recommence.

-
Edité par Lucky13 14 février 2015 à 17:42:21

15 février 2015 à 14:04:39

Bonjour à tous 

Ghinzu a écrit:

J'ai cette erreur qui apparaît. Mais comme je ne suis pas habitué à la POO et aux namespace , je suis un peu perdu.

ClassNotFoundException: Attempted to load class "ArticleDAO" from namespace "MicroCMS\DAO" in C:\webserver\www\MicroCMS\app\app.php line 15. Do you need to "use" it from another namespace?Moi aussi j'ai voulu abandonné la formation pour le même problème et curieusement :

Moi aussi j'ai rencontré le même problème et curieusement :

J'ai repris l'ensemble des itérations mais cette fois-ci j'ai tout simplement ignoré la création de mon fichier .htaccess.

J'en conclus que mon serveur apache est probablement mal configuré et au lieu de me prendre la tête et de m'arracher les quelques cheveux qu'il me reste je vais plutôt essayer de comprendre le fonctionnement et la logique du Framework SILEX.

Je n'apporte pas de solutions au problème, mais quelquefois, la solution apparaît lorsque nous la cherchons plus. 

Bon développement à vous tous.

Sylvain alias sf100672

-
Edité par sf100672 16 février 2015 à 10:25:05

15 février 2015 à 14:48:39

sf100672 a écrit:

Bonjour à tous 

Ghinzu a écrit:

Bonjour,

Manifestement, on a tous des soucis. 

Je n'arrive pas à faire fonctionner le vhost (même après avoir suivi les infos ci-dessus). Est-ce utile pour la suite du cours ?

J'ai cette erreur qui apparaît. Mais comme je ne suis pas habitué à la POO et aux namespace , je suis un peu perdu.

ClassNotFoundException: Attempted to load class "ArticleDAO" from namespace "MicroCMS\DAO" in C:\webserver\www\MicroCMS\app\app.php line 15. Do you need to "use" it from another namespace?

Merci pour votre aide.

-
Edité par Ghinzu le 13 février 2015 à 16:31:02


Moi aussi j'ai voulu abandonné la formation pour le même problème et curieusement :

J'ai repris l'ensemble des itérations mais cette fois-ci j'ai tout simplement ignoré la création de mon fichier .htaccess.

J'en conclus que mon serveur apache est probablement mal configuré et au lieu de me prendre la tête et de m'arracher les quelques cheveux qu'il me reste je vais plutôt essayer de comprendre le fonctionnement et la logique du Framework SILEX.

Je n'apporte pas de solutions au problème, mais quelquefois, la solution apparaît lorsque nous la cherchons plus. 

Bon développement à vous tous.

Sylvain alias sf100672

-
Edité par sf100672 il y a 29 minutes

J'ai recommencé à zéro et ENFIN pu installer composer (merci aux infos ci dessus). J'ai repris les données de Github et refait l'install avec composer et ça fonctionne.

J'attaque la suite (et tenter de tout comprendre).

NB : j'ai constaté dans bien d'autres MOOC, des soucis (d'install entre autre) avec le serveur web. Je n'ai jamais eu de soucis et c'est donc difficile d'aider les autres (d'autant que je ne suis pas expert IT ou en programmation).

15 février 2015 à 15:32:54

j'ai un pb d'installation syngeb

-
Edité par kioio 15 février 2015 à 15:33:15

15 février 2015 à 16:08:32

Pour ceux qui ont des problèmes avec l'hôte virtuel:

Il faut éditer le fichier hosts situé dans:

C:\Windows\System32\drivers\etc


Pour cela, il faut d'abord ouvrir notepad avec les droits administrateur(clic droit sur Notepad et ouvrir en tant qu'administrateur)

Ensuite, il suffit simplement d'ajouter cette ligne à la fin du fichier:

127.0.0.1 microcms


Il y a peut-être une solution plus simple, mais j'ai pas trouvé :/

15 février 2015 à 16:21:40

J'ai un soucis avec l'itération 7.

Tout fonctionne correctement, sauf que quand je clique sur un article j'ai une erreur avec mon lien

The requested URL /MicroCMS/web/article/3 was not found on this server.)

Je pense que c'est lié à une redirection de type rewrite URL mais je ne sais comment modifier le .htaccess pour que cela fonctionne. J'ai modifié mes fichiers pour arriver à ça, sinon, le lien pointe (par défaut) vers localhost/article/3.

Je n'ai pas fait d'hôte virtuel car ça ne fonctionne pas. Je ne vais pas dire que j'ai tout testé, mais j'ai testé pas mal de chose et à chaque fois, ça plante le serveur. Maintenant, est-ce lié à ça ?

Si des bonnes âmes ont une idée de solution, je suis preneur.

15 février 2015 à 16:22:54

Mic32768 a écrit:

Pour ceux qui ont des problèmes avec l'hôte virtuel:

Il faut éditer le fichier hosts situé dans:

C:\Windows\System32\drivers\etc


Pour cela, il faut d'abord ouvrir notepad avec les droits administrateur(clic droit sur Notepad et ouvrir en tant qu'administrateur)

Ensuite, il suffit simplement d'ajouter cette ligne à la fin du fichier:

127.0.0.1 microcms


Il y a peut-être une solution plus simple, mais j'ai pas trouvé :/


J'ai essayé aussi....mais ça modifie le lien pour tout mon serveur (et j'ai d'autres projets dessus).
15 février 2015 à 16:35:47

Ghinzu a écrit:

Mic32768 a écrit:

Pour ceux qui ont des problèmes avec l'hôte virtuel:

Il faut éditer le fichier hosts situé dans:

C:\Windows\System32\drivers\etc


Pour cela, il faut d'abord ouvrir notepad avec les droits administrateur(clic droit sur Notepad et ouvrir en tant qu'administrateur)

Ensuite, il suffit simplement d'ajouter cette ligne à la fin du fichier:

127.0.0.1 microcms


Il y a peut-être une solution plus simple, mais j'ai pas trouvé :/


J'ai essayé aussi....mais ça modifie le lien pour tout mon serveur (et j'ai d'autres projets dessus).

Oui effectivement! Comme précisé dans le cours, pour empecher cela, il faut aussi rajouter le localhost dans httpd-vhosts.conf:
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/"
    ServerName localhost
</VirtualHost>



15 février 2015 à 16:37:26

Donc en gros, pour que tout fonctionne, httpd-vhosts.conf devrait ressembler à cela:

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/microcms/web"
    ServerName microcms
    <Directory "C:/xampp/htdocs/microcms/web">
        AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/"
    ServerName localhost
</VirtualHost>

En plus des modifs dans le fichier hosts

15 février 2015 à 17:17:24

 pour Ymox

voici les lignes que j ais rajoutée à "httpd-vhosts.conf" , je suis sous window:

<VirtualHost *:80>
    DocumentRoot "C:\wamp\www\"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:\wamp\www\MicroCMS\web"
    ServerName microcms
    <Directory "C:\wamp\www\MicroCMS\web">
        AllowOverride All
    </Directory>
</VirtualHost>

Je pense que c est plus un probleme de configuration du serveur car quant je vais sur l icone de wampserver et sur MyProjects, n importe lequel de mes projets que je sélectionne  il part sur le net et pas sur mon projet



-
Edité par gilles883 15 février 2015 à 18:05:00

15 février 2015 à 18:30:52

J'ai recommencé pour le host...et ça fonctionne. Youpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiie

Mais j'ai toujours mon erreur quand je vais sur un article en particulier :-(

15 février 2015 à 19:41:38

Salut à tous,

déjà merci pour le cours.

Même souci que Ghinzu sur l'itération 7: 

The requested URL /article/1 was not found on this server.

Je suppose un problème avec le .htaccess pourtant le code correspond bien  à celui du cours pour ce fichier.

edit:

sous wamp, il faut supprimer # dans httpd.conf à cette ligne :

#LoadModule rewrite_module modules/mod_rewrite.so



-
Edité par Erkha 15 février 2015 à 20:39:10

15 février 2015 à 20:26:41

j ai enfin une solution qui permet d'utiliser l adresse http://microcms:

1) ajouter ce code à C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/wamp/www/MicroCMS/web"
    ServerName microcms
    <Directory "C:/wamp/www/MicroCMS/web">
        AllowOverride All
    </Directory>
</VirtualHost>


2) dans C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf il faut enlever le commentaire de la ligne (pour moi la 513)

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

3) dans le fichier C:\Windows\System32\drivers\etc\hosts (notepad ++ doit etre ouvert en tant qu administrateur)

rajouter la ligne

127.0.0.1        microcms

à la fin

4) redémarrer wampserver


-
Edité par gilles883 15 février 2015 à 20:27:44

16 février 2015 à 9:50:30

Voilà....tout fonctionne (vhost, rewrite url,...).

Les conseils ci-dessus m'ont été bien utile.

Bon ben, j'attaque le TP.

A bientôt en cas de soucis.

16 février 2015 à 10:29:06

Bonjour à tous,

Je suis l'auteur de ce cours. Merci pour votre intérêt et bravo à celles et ceux qui se sont débrouillés tout seuls pendant mes vacances au ski :)

Le mini-cours Premiers pas avec le framework Silex contient toutes les informations nécessaires pour débuter avec ce framework. Je viens de le mettre à jour avec des informations complémentaires (édition de httpd.conf pour inclure httpd-vhosts.conf et le module de réécriture d'URL mod_rewrite). Je conseille à celles et ceux qui sont toujours bloqué(e)s par des soucis d'URL de suivre ce cours : les manips à faire seront exactement les mêmes pour l'application MicroCMS.

Je vais également débuter une FAQ dans le premier message de ce fil.

Bon courage pour la suite !

Baptiste

16 février 2015 à 12:14:33

Bonjour à tous,

Je n'ai pas à proprement parler un problème, mais plutôt une interrogation concernant l'intégration du moteur de Template "Twig".

Je trouve que le temps nécessaire pour la génération de la vue est grandement augmenté en comparaison de celui qui était nécessaire avant la présence de "Twig"

Cela est peut-être normal et j'aimerais savoir si vous aussi vous constatez une différence flagrante (et importante)  ?

De ce fait je me pose la question de savoir s'il est pertinent d'utiliser un moteur de Template alors qu'aujourd'hui la tendance serait davantage la course aux performances plutôt qu'aux fonctionnalités.  

Qu'en pensez-vous ?

Sylvain alias sf100672

-
Edité par sf100672 16 février 2015 à 12:35:51

Cours Architecture PHP professionnelle / Questions

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown