Salut,
L'erreur dit que le deuxième argument de la fonction __invoke(ServerRequestInterface $request, callable $next) devrait être un callable mais que tu lui as passé un array. Comment appelles tu cette fonction dans ton code ?
Bonjour la communauté,
Je suis nouveau sur le forum et je rencontre un soucis durant la formation PHP POO. En effet Delegate n'existant plus nous devons passer par le handle de la classe RequestHandlerInterface.
J'ai donc essayé de le mettre en place mais j'obtiens une erreur:
Voici les classes en cause :
TrainlingSlashMiddleware.php
App.php
Donc mon objectif final est de faire fonctionner mes middlewares, j'ai déjà abandonné le middleware Whoops car j'avais le même problème. Mais là c'est essentielle pour la poursuite de la formation
(pour rappel voici le lien : https://www.grafikart.fr/formations/mise-pratique-poo/csrf-securite)
Donc ici j'obtiens l'erreur suivante :
Fatal error: Uncaught TypeError: Argument 2 passed to App\Framework\Middleware\TrailingSlashMiddleware::invoke() must be callable, array given in C:\xampp\htdocs\monframework\src\Framework\Middleware\TrailingSlashMiddleware.php:15 Stack trace: #0 [internal function]: App\Framework\Middleware\TrailingSlashMiddleware->invoke(Object(GuzzleHttp\Psr7\ServerRequest), Array) #1 C:\xampp\htdocs\monframework\src\Framework\App.php(74): call_user_func_array(Object(App\Framework\Middleware\TrailingSlashMiddleware), Array) #2 C:\xampp\htdocs\monframework\src\Framework\App.php(90): Framework\App->handle(Object(GuzzleHttp\Psr7\ServerRequest)) #3 C:\xampp\htdocs\monframework\public\index.php(27): Framework\App->run(Object(GuzzleHttp\Psr7\ServerRequest)) #4 {main} thrown in C:\xampp\htdocs\monframework\src\Framework\Middleware\TrailingSlashMiddleware.php on line 15
En attendant je remercie tous ceux qui se pencherons sur le sujet.
Amicalement,
Salut,
L'erreur dit que le deuxième argument de la fonction __invoke(ServerRequestInterface $request, callable $next) devrait être un callable mais que tu lui as passé un array. Comment appelles tu cette fonction dans ton code ?
La classe est indiqué ci-dessus (TrailingSlashMiddleWare):
Je pense que le soucis viens d'ici (de la classe App):
Je lui passe un tableau, chose que Grafikart fait dans la formation, mais avec le changement du Delegate en RequestHandlerInterface tout est différent et j'ai du mal à suivre
Et si tu changes callable $next par array $next dans la fonction __invoke, ça donne quoi ?
C'est mieux mais j'ai toujours cette erreur :
Bonjour.
C'est mieux mais j'ai toujours cette erreur
Et tu ne comprend pas l'erreur ?
Elle te dit tout simplement que tu fais appel à une méthode qui n'est pas définie, soit la méthode process dans ce cas.
Si je comprends l'erreur je remplace la methode __invoke par process mais toujours une erreur :
Je la comprends bien aussi (il faut retourner une instance de ResponseInterface et là elle est nul) mais je fais quoi là ? car des que je change un morceau d'un côté ca casse de l'autre et je tourne en boucle. Je suis débutant en php j'essaye de suivre la formation qui n'est pas forcément à jour... (bien que je ne critique pas ce fait car l'informatique évolu rapidement)
Si tu es débutant comme tu dis alors ne fais pas cette formation ^^.
Sinon oui en effet la formation ce base sur des choses qui ont été changer comme la validation du PSR-15 par exemple.
Le plus simple serait de comprendre ce qu'il faut faire et de le faire de son côté. Pour info c'est ce que j'ai fais sur mon framework :
Une classe Action (équivalant controller)
Pour le reste je te laisse regarde directement mon repo ^^.