Bonjour,
Je viens de changer d'ordi ; le nouveau est en PHP 8.0.2 alors que l'ancien est en PHP 7.3.26.
La même application sur les deux ordis. L'appel des classes passe par une fonction :
Les premières classes sont appelées correctement puis, sur une action de création d'une candidature, ça plante sur le nouvel ordi alors que ça passe sur l'ancien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 private function callAction(Request $request) { $target = $request->getRoute()->getCallable(); /*echo '<br /> $request :<pre>'; var_dump($request); echo "</pre>"; echo '<br />request getRoute : '; var_dump($request->getRoute()); echo '<br />target : '; var_dump($target); echo '<br />target callable ? '; var_dump(is_callable($target)); exit; */ if (is_callable($target)) { return call_user_func([new $target[0]($request), $target[1]]); } $class = new $target; return $class($request); }
Nouvel ordi en PHP8 :
=> On passe donc à l'instruction $class = new $target; et ça plante puisque $target est un tableau.target :
/home/philippe/Nextcloud/pef_public/src/Framework/App.php:199:
array (size=2)
0 => string 'App\Candidature\Actions\CandidaturesAction' (length=42)
1 => string 'creerCandidature' (length=16)
target callable ?
/home/philippe/Nextcloud/pef_public/src/Framework/App.php:201:boolean false
Ancien ordi en PHP7 :
=> Là on passe bien dans le if et la méthode de la classe est appelée.target :
/home/philippe/Nextcloud/pef_public/src/Framework/App.php:199:
array (size=2)
0 => string 'App\Candidature\Actions\CandidaturesAction' (length=42)
1 => string 'creerCandidature' (length=16)
target callable ?
/home/philippe/Nextcloud/pef_public/src/Framework/App.php:201:boolean true
Si j'ajoute true à is_callable, if (is_callable($target, true)) { alors ça passe dans le if et la méthode est lancée... mais ça me fait planter d'autres trucs !
Autre bizarrerie : le même système avec une autre application similaire (en fait il y a une partie d'application publique et une privée) ne pose pas de problème sur le nouvel ordi !
Je ne suis pas l'auteur du framework utilisé dans lequel se trouve la méthode callAction.
Une idée à me soumettre ?
Partager