J'ai refait des essais, ce matin . J'ai juste rechargé Intelephense, et le programme fonctionne à nouveau. Par contre, getName() est toujours souligné.
J'ai refait des essais, ce matin . J'ai juste rechargé Intelephense, et le programme fonctionne à nouveau. Par contre, getName() est toujours souligné.
Christophe (cavo789)
Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
Si le code est mal écrit, l'IDE peut être perdu et ne pas pouvoir définir la méthode incriminée. Mais ce n'est pas pour cela que le code ne pourra être exécuté. Donc le code de la méthode " getMethetodParams" serait mal écrit?
Un autre formateur m'a indiqué de préciser que $Param est de type ReflectionParameter. Les
soulignements ont disparus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /** * @var ReflectionParameter $param */ foreach ($methodParameters as $param) { $paramName = $param->getName(); $paramType = $param->getType()->getName(); if (array_key_exists($paramType, $this->services)) { $params[$paramName] = $this->services[$paramType]; } }
Voilà, c'est ce que je disais, il faut que l'éditeur puisse comprendre ton code et pour cela il faut l'aider.
Il n'exécute pas le code, Il le lit uniquement. Il ne peut pas deviner le type complexe d'une variable, il faut le lui dire, c'est ce que tu as fais.
Sous PHP 8, il est à mes yeux, de développeur strict et donc sévère, assassin de ne pas déclarer le type de ses variables, le type retourné par une fonction, etc. Nous sommes en 2024, nous avons un langage PHP de plus en plus typé et c'est heureux. C'est une aberration de continuer à programmer "sale" dès lors que c'est un nouveau code et pas du legacy qui doit encore tourner sur des serveurs d'il y a 15 ans ou plus.
Christophe (cavo789)
Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
Peut-être une piste :
Avant PHP 7.1, la méthode getType() appelée sur l'objet ReflectionParameter (param->getType() dans le code proposé) retournait un objet de type ReflectionType qui ne possède pas de méthode getName().
Après PHP 7.1, cette méthode peut retourner un objet de type ReflectionNamedType qui possède bien une méthode getName().
https://www.php.net/manual/fr/class.reflectiontype.php
Si tu as plusieurs interpréteurs PHP installé sur ton poste, vérifie dans les paramètres de ton éditeur que tu utilises le même exécutable php que celui utilisé pour exécuter ton code :
- https://code.visualstudio.com/docs/languages/php
- https://www.jetbrains.com/help/phpst...hp-interpreter
Bonjour,
j'ai bien les même versions de php sur VSCodium et sur ubuntu
Sur VSCodium, c'est bien la version 8.1.2 de php qui est configurée.
et php -v donne:
Les vidéos du formateur datent un petit peu. Il avait sur son PC, PHP7 et PHP8. Il a travaillé sous PHP7 pendant les sept premières vidéos et a proposé une présentation des nouveautés de PHP8 dans la dernière vidéo. Je n'ai pas compris cette démarche car les participants à ces vidéos en direct étaient déjà en PHP8, pour certains. De son côté son IDE ne déclarait aucune erreur (pour getName()). Depuis quel version de PHP, peut-on déclarer le type de ses variables?
Avec précision je n'en sais rien mais déjà sous php 7.x (https://www.php.net/manual/fr/langua...clarations.php).
J'ai quand même des doutes sur ton formateur, c'est un gars qui n'est pas très strict et pas très attaché à enseigner la bonne façon de programmer. Il devrait repasser son certificat d'aptitude.
Que diable ! Comment peut-on ne pas typer ses variables ? 😉
Parle lui de Rectorphp, s'il ne connaît pas, fuis ses cours 😅
Note : que son IDE n'affiche pas d'erreurs ne veut strictement rien dire. Exempt de toutes extensions, vscode (un éditeur ici) ne verrait rien lui non plus.
Christophe (cavo789)
Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
Ce n'est pas mon formateur référent et je ne peux donc pas le contacter. On a accès à des "lives" en replay, sur différents sujets (au libre choix).
Ce que j'aurais au moins retenu, c'est:
- le typage est indispensable pour adopter une bonne pratique en PHP
- être prudent vis à vis des informations fournies par les IDE.
Merci pour ton accompagnement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager