Salut Lior, si j'avais encore assez de cheveux, je me les arracherais tellement je galère. Mais je rencontre un problème peut-être non anticipé dans ce tuto. Je sais bien que le tuto a deux ans, et ça vient peut-être du fait que là je suis sur SF 6.3 et il y a peut-être eu des changements dans a logique des Resolvers, mais sinon, ça coince. Pour visualiser le bout de code sur lequel je bloque, c'est au time-code 19:51 de cette vidéo, et par ailleurs, faute de moyens pour m'offrir une formation, je m'auto-forme. Mais je rame, la documentation est une vraie bouse inutilisable et il faut régulièrement faire quasiment du reverse-engeneering pour trouver ce qui déconne. Bref... j'avance quand même, mais là je coince un peu. Dans le bout de code en question, on crée la variable _$controleur_, ok, et ensuite la variable _$arguments_ : ben oui, mais là j'ai un problème s'il doit y avoir des arguments dans le constructeur dudit contrôleur, le _ControllerResolver_ ne lui en passe aucun : le _ControllerResolver_ appelle _getController_ qui à son tour fait appel à _instantiateController_ qui fait un « _new $controller_ » sans le moindre paramètre. Du coup, en créant la variable _$arguments_ après, ça ne sert ici à rien, et comme on a besoin du contrôleur pour récupérer les arguments, c'est le serpent qui se mord la queue. Est-ce qu'il y aurait un défaut dans la conception du framework personnalisé. Ce que je constate, c'est que mes contrôleurs passent bien tant que je n'ai pas besoin d'arguments dans un constructeur ajouté, mais ici j'en ai un qui en requiert trois, lesquels sont bien dans le container ... mais qui n'arrivent jamais. Je me prends la tête depuis deux semaines avec ça. J'ai bien visionné toutes les vidéos de la liste dans l'ordre. Aurais-je loupé un chapitre quelque part ?
ça commence à piquer un peu pour moi qui suis débutant mais c'est tellement bien expliqué (comme d'habitude). Après 2 ou 3 visionnages ça va le faire. Merci Lior !
@@LiorCHAMLA Et on dit que les développeurs n'ont pas le sens de la poésie, car trop binaires ? _C'est sans savoir que notre monde est fait d’aurores booléennes, que la récursivité nous baigne dans les données de l'arbre du vivant, que nous sommes l'adn qui harmonise les nœuds de la toile sur le monde, et que sans nous, peu sauraient que la terre est bleue comme une orange._
Hello Superbe formation :-) Mais je me rends compte que je viens tous les jours depuis plus d'un mois voir si l'épisode 6 est en ligne.... mais c'est broucouille à chaque fois :-( L'épisode 5 s'arrête brutalement sur .... "La semaine prochaine nous verrons..." Mais il n'y aura pas de suite en fait ?? Dommage :-( c'était vraiment bien :-)
@@LiorCHAMLA Merci... c'est cool ! :-) Très honoré d'avoir été répondu... Mais maintenant ça va être pire, je vais passé toutes les heures ... c'est un vrai Thriller ... :-) Je n'ai pas si j'abuse, vu qu'il y a eu réponse, je tente....Une probabilité pour 2020 ? Merci en tous cas :-)
Super tuto, c'est hyper intéressant même pour les confirmés ;) merci Lior ! $className et $methodName ne pourraient-ils pas être défini plus facilement en faisant un explode("@", $resultat['_controller']) ?
@@LiorCHAMLA T'es un génie mec! Sois pas si dur avec toi :) J'attend le prochain épisode avec impatience. Tu vas montrer comment injecter les controllers via les annotations?
Super tuto, ce serait bien de refaire marcher notre test à la fin du tuto, pour montrer comment l'utilisation de Response, Request etc nous aide sur ce point
Hello J'ai pas trop compris comment marchait le call_user_func_array pour récupérer le nom de la méthode. Comment il sait que la méthode à appeler c'est "hello" par exemple et pas "name" ? :/ J'ai du loupé un truc, faut dire que je me suis tapé les 4 dernières vidéos à la suite en x1.25 :D
Dans la configuration des routes, chaque URL est associée à une phrase comme "App\Controller\MonController::maFonction". Donc quand on sait quelle URL est appelée, on sait quelle est la fonction à appeler grâce à la fameuse phrase, qu'on coupe en deux là où on voit les "::" et on a donc la classe à instancier et la méthode à appeler. Dans cette vidéo je montre que tout ce travail de : - couper la phrase en 2 - trouver le nom de la classe et créer un objet de cette classe - trouver le nom de la méthode C'est fait par le "ControllerResolver". Donc en fait on sait exactement quelle fonction appeler :)
Quand tu replaces le call_user_func par le call_user_func_array On pourrait aussi utiliser l'opérateur "splat" (le "...") pour passer le $arguments, non ? J'ai découvert le splat y'a pas longtemps, je ne suis pas sûr xD M'enfin, ça revient au même ^^ Et grave cool toute cette magie des Resolver, on comprend trop bien comment Symfony fait tout ça
ô lior chamla, je viens à toi pour quérir ton aide vis-à-vis du framework de la playlist. La problématique est simple : les requête ajax fonctionne parfaitement en local (en ajoutant par ex : /signIn dans route). Mais me renvoie une erreur 404 en prod : /. Aurais-tu une piste à me donner pour comprendre d'ou vient le problème et ce que j'ai mal fais ?
@@LiorCHAMLA c'est ce que je fais depuis 2jours de 8h du mat à 4h je commence à saturer lol. Il y a très peu d'informations et c'est pas détaillé c'est écrit en résumé , Il a d'abord fallu installer ssh sur vs studio code (c'est rien ça), ensuite mettre à jour la version php du cli car elle est à 4.4 de base, ensuite installer composer sur le serveur distant, ensuite symfony mais le server:run marche pas et lorsque que je tape l'URL du site j'ai un 404, j'ai également recherché, modifié le htaccess. Mon hebergeur c'est 1and1 et ils ne connaissent pas symfony 😫. Ça fait des mois que je développe ce site je suis dégouté de pas pouvoir le mettre en ligne et devoir laisser tomber si près du but je ne trouve aucune information après au moins 20h de recherche j'ai dormi 6h ces deux derniers jours ne pensent pas que je demande la solution sans chercher, on m'a toujours reproché de pas demander d'aide et de me débrouiller seul mais la je n'avais pas le choix
@@oussous0222 Bah t'as déjà fait le plus gros, voilà ce que je te conseille : 1) Héberge ton code sur GitHub par exemple 2) Connectes toi en SSH sur ton serveur et fait un "git clone" de ton code (télécharge ton code dans un dossier) 3) Toujours dans SSH sur ton serveur, entre dans le dossier où se trouve ton code et lance un "composer install" (pour télécharger les dépendances) 4) Evidemment change les configurations pour taper sur la bonne base de données etc 5) Fais en sorte qu'un nom de domaine arrive bien dans le dossier voulu (par exemple, dans Symfony, on vise le dossier "public") 6) Sois bien sur d'avoir un fichier .htaccess dans le dossier public 7) Ca devrait rouler normalement :x
@@LiorCHAMLA j'ai pas fais comme ça mais je viens de réussir, AIE AIE AIEEEEEEEEEEEEEEEEEEEEEEEEEEEEE c'est aussi grâce à toi et tes vidéos symfony 4 pour la base du site ! Je fabrique des objets en impression 3D je vais t'en faire un lior CHAMLA !
Pourquoi tu n'installes pas xdebug pour tes vidéos ? Ca serait plus pratique que des dump/die, et tu pourrais aller facilement dans le code des classes symfony montrer un peu ce qu'il s'y passe
Pas faux, j'avoue ne pas vraiment être du genre à débugger avec des breakpoints mais pour les vidéos c'est une façon intéressante de montrer les choses :)
Salut Lior,
si j'avais encore assez de cheveux, je me les arracherais tellement je galère. Mais je rencontre un problème peut-être non anticipé dans ce tuto. Je sais bien que le tuto a deux ans, et ça vient peut-être du fait que là je suis sur SF 6.3 et il y a peut-être eu des changements dans a logique des Resolvers, mais sinon, ça coince.
Pour visualiser le bout de code sur lequel je bloque, c'est au time-code 19:51 de cette vidéo, et par ailleurs, faute de moyens pour m'offrir une formation, je m'auto-forme. Mais je rame, la documentation est une vraie bouse inutilisable et il faut régulièrement faire quasiment du reverse-engeneering pour trouver ce qui déconne. Bref... j'avance quand même, mais là je coince un peu.
Dans le bout de code en question, on crée la variable _$controleur_, ok, et ensuite la variable _$arguments_ : ben oui, mais là j'ai un problème s'il doit y avoir des arguments dans le constructeur dudit contrôleur, le _ControllerResolver_ ne lui en passe aucun : le _ControllerResolver_ appelle _getController_ qui à son tour fait appel à _instantiateController_ qui fait un « _new $controller_ » sans le moindre paramètre. Du coup, en créant la variable _$arguments_ après, ça ne sert ici à rien, et comme on a besoin du contrôleur pour récupérer les arguments, c'est le serpent qui se mord la queue. Est-ce qu'il y aurait un défaut dans la conception du framework personnalisé.
Ce que je constate, c'est que mes contrôleurs passent bien tant que je n'ai pas besoin d'arguments dans un constructeur ajouté, mais ici j'en ai un qui en requiert trois, lesquels sont bien dans le container ... mais qui n'arrivent jamais. Je me prends la tête depuis deux semaines avec ça.
J'ai bien visionné toutes les vidéos de la liste dans l'ordre. Aurais-je loupé un chapitre quelque part ?
Bravo pour cette série ! C'est canon. Merci 😎
Merci ! Et ça continue encore pendant au moins 3 vendredis :)
La magie de Symfony enfin démystifiée avec l'`argumentResolver`, merci !
De rien :) merci à toi !
ça commence à piquer un peu pour moi qui suis débutant mais c'est tellement bien expliqué (comme d'habitude). Après 2 ou 3 visionnages ça va le faire. Merci Lior !
Gogogogo 💪💪 et merci :)
très bonne série, hâte de voir la suite :)
Bientôt, si on peut :) Merci beaucoup !
Bonjour Lior je suis vos tutos en symfony à merveille .Que savez vous des tests unitaires et fonctionnels
Je suis pas super au point sur tout ça mais ça fait un an maintenant que j'y trvaille d'arrache pieds pour m'améliorer :)
La classe ! Incollable sur Symfony, mais aussi une belle réflexion avec des arguments. ;p
Ooooh joliiiii !
@@LiorCHAMLA Et on dit que les développeurs n'ont pas le sens de la poésie, car trop binaires ?
_C'est sans savoir que notre monde est fait d’aurores booléennes, que la récursivité nous baigne dans les données de l'arbre du vivant, que nous sommes l'adn qui harmonise les nœuds de la toile sur le monde, et que sans nous, peu sauraient que la terre est bleue comme une orange._
Hello Superbe formation :-)
Mais je me rends compte que je viens tous les jours depuis plus d'un mois voir si l'épisode 6 est en ligne.... mais c'est broucouille à chaque fois :-(
L'épisode 5 s'arrête brutalement sur .... "La semaine prochaine nous verrons..."
Mais il n'y aura pas de suite en fait ?? Dommage :-(
c'était vraiment bien :-)
J'ai eu beaucoup de boulot hélas :x et promis y aura une suite, que ce soit un live ou une suite classique, y aura une suite :)
@@LiorCHAMLA
Merci... c'est cool ! :-)
Très honoré d'avoir été répondu...
Mais maintenant ça va être pire, je vais passé toutes les heures ... c'est un vrai Thriller ... :-)
Je n'ai pas si j'abuse, vu qu'il y a eu réponse, je tente....Une probabilité pour 2020 ?
Merci en tous cas :-)
@@falcometa8420 Evidemment :)
@@LiorCHAMLA 😌😀
Super tuto, c'est hyper intéressant même pour les confirmés ;) merci Lior !
$className et $methodName ne pourraient-ils pas être défini plus facilement en faisant un explode("@", $resultat['_controller']) ?
Oui tout à fait :) j'ai galéré pour rien j'suis un gogole :p
@@LiorCHAMLA T'es un génie mec! Sois pas si dur avec toi :)
J'attend le prochain épisode avec impatience. Tu vas montrer comment injecter les controllers via les annotations?
@@bycrea Bah y'a déjà 2 nouveaux épisodes depuis celui là, le prochain normalement vendredi matin :)
@@LiorCHAMLA Oui oui j'ai tout vu ceux la :)
J'attend la suite suite ! A vendredi alors, merci encore, et bravo.
Vraiment top cette vidéo,
Comment fais tu Lior pour avoir un Var_dump "pretty" !
merci !!
C'est grâce à XDebug :)
Sinon tu peux utiliser la fonction dump
Il faudra que tu installes le composant symfony/var-dumper au préalable
Et en plus de ça il est magicien, la vapoteuse à 11:59 qui se transforme en tasse à café ! xD
Super tuto, ce serait bien de refaire marcher notre test à la fin du tuto, pour montrer comment l'utilisation de Response, Request etc nous aide sur ce point
Ca viendra dans les épisodes suivants :) j'ai juste pas le temps en ce moment de gérer ça :'(
Bonjour et bravo !
Pourquoi on continue à passer l'argument $request à la méthode "hello" pourtant ça marche aussi avec juste l'argument $name ?
Oui ça marche même sans la Request, c'est juste que je voulais montrer qu'on pouvait le demander :)
Enfin ! Je me mets ça de côté...
Gogo 💪
Merci Lior
Merci à toi :)
Hello
J'ai pas trop compris comment marchait le call_user_func_array pour récupérer le nom de la méthode. Comment il sait que la méthode à appeler c'est "hello" par exemple et pas "name" ? :/ J'ai du loupé un truc, faut dire que je me suis tapé les 4 dernières vidéos à la suite en x1.25 :D
Dans la configuration des routes, chaque URL est associée à une phrase comme "App\Controller\MonController::maFonction". Donc quand on sait quelle URL est appelée, on sait quelle est la fonction à appeler grâce à la fameuse phrase, qu'on coupe en deux là où on voit les "::" et on a donc la classe à instancier et la méthode à appeler.
Dans cette vidéo je montre que tout ce travail de :
- couper la phrase en 2
- trouver le nom de la classe et créer un objet de cette classe
- trouver le nom de la méthode
C'est fait par le "ControllerResolver". Donc en fait on sait exactement quelle fonction appeler :)
Quand tu replaces le call_user_func par le call_user_func_array
On pourrait aussi utiliser l'opérateur "splat" (le "...") pour passer le $arguments, non ? J'ai découvert le splat y'a pas longtemps, je ne suis pas sûr xD M'enfin, ça revient au même ^^
Et grave cool toute cette magie des Resolver, on comprend trop bien comment Symfony fait tout ça
Je crois bien que oui :)
Top , merci !
De rien :)
ô lior chamla, je viens à toi pour quérir ton aide vis-à-vis du framework de la playlist. La problématique est simple : les requête ajax fonctionne parfaitement en local (en ajoutant par ex : /signIn dans route). Mais me renvoie une erreur 404 en prod : /. Aurais-tu une piste à me donner pour comprendre d'ou vient le problème et ce que j'ai mal fais ?
Aucune idée là comme ça hélas ..
Salut ça va ? Merci pour tes vidéos ! Par contre on fait comment pour le passer en ligne une fois fini ?
Bah comme n'importe quel site PHP :) si tu ne sais pas faire, aucun soucis y a des dizaines de tutoriels vidéo / écrits pour apprendre !
@@LiorCHAMLA c'est ce que je fais depuis 2jours de 8h du mat à 4h je commence à saturer lol. Il y a très peu d'informations et c'est pas détaillé c'est écrit en résumé , Il a d'abord fallu installer ssh sur vs studio code (c'est rien ça), ensuite mettre à jour la version php du cli car elle est à 4.4 de base, ensuite installer composer sur le serveur distant, ensuite symfony mais le server:run marche pas et lorsque que je tape l'URL du site j'ai un 404, j'ai également recherché, modifié le htaccess. Mon hebergeur c'est 1and1 et ils ne connaissent pas symfony 😫.
Ça fait des mois que je développe ce site je suis dégouté de pas pouvoir le mettre en ligne et devoir laisser tomber si près du but je ne trouve aucune information après au moins 20h de recherche j'ai dormi 6h ces deux derniers jours ne pensent pas que je demande la solution sans chercher, on m'a toujours reproché de pas demander d'aide et de me débrouiller seul mais la je n'avais pas le choix
@@oussous0222 Bah t'as déjà fait le plus gros, voilà ce que je te conseille :
1) Héberge ton code sur GitHub par exemple
2) Connectes toi en SSH sur ton serveur et fait un "git clone" de ton code (télécharge ton code dans un dossier)
3) Toujours dans SSH sur ton serveur, entre dans le dossier où se trouve ton code et lance un "composer install" (pour télécharger les dépendances)
4) Evidemment change les configurations pour taper sur la bonne base de données etc
5) Fais en sorte qu'un nom de domaine arrive bien dans le dossier voulu (par exemple, dans Symfony, on vise le dossier "public")
6) Sois bien sur d'avoir un fichier .htaccess dans le dossier public
7) Ca devrait rouler normalement :x
@@LiorCHAMLA j'ai pas fais comme ça mais je viens de réussir, AIE AIE AIEEEEEEEEEEEEEEEEEEEEEEEEEEEEE c'est aussi grâce à toi et tes vidéos symfony 4 pour la base du site ! Je fabrique des objets en impression 3D je vais t'en faire un lior CHAMLA !
On vapote en pleine formation ? :D
Très bonne vidéo encore une fois de plus
J'ai oublié ça au montage ?! C'est à quel timing ?
@@LiorCHAMLA @11:58 c'est furtif ;)
@@jeranders :'((
Merci Lior :)
De rien merci à toi :)
Y aura t'il un épisode 6? 😁😎
Bientôt j'espère :)
Pourquoi pas:
list($className, $methodName) = explode('@', $resultat['_controller']);
:)
Parce que je suis con comme un âne :D :D :D
@@LiorCHAMLA J'ai pensé lamême chose que Sam, mais j'adore comment tu te prends pas la tête. Continue Lior ;)
Hahahaha non j'avoue c'est facile quand on a le temps de la réflexion.
Bonne continuation. Belle chaîne
@@electronlibre4163 Merci énormément :)
Je me suis dis exactement la même chose ^^
Pourquoi tu n'installes pas xdebug pour tes vidéos ? Ca serait plus pratique que des dump/die, et tu pourrais aller facilement dans le code des classes symfony montrer un peu ce qu'il s'y passe
Pas faux, j'avoue ne pas vraiment être du genre à débugger avec des breakpoints mais pour les vidéos c'est une façon intéressante de montrer les choses :)
@@LiorCHAMLA Pour rester côté symfony, un petit "composer require symfony/var-dumper" et ça fait très bien le taff :)
Y a pas de suite ?
Peut-être un jour quand j'aurai le temps, je bosse pas mal en ce moment ^^
@@LiorCHAMLA Bon courage ☺️
Quand tu crée ta callable tu n'es même pas obligé de faire un new $className
$controller = [$className, $methodName] suffit pour faire une callable
Je suis pas sur, sauf si la méthode est statique non ? Il te faut une instance d'objet pour créer ton callable :x
Mon prof, on pouvais exploser la chaîne en suivant le @? ce qui nous aurait donné un tableau de 2 portions. Controller et la méthode
Oui. Je me suis fait chier pour rien :)
@@LiorCHAMLA 🤣🤣🤣🤣Tu es un 10 toi.