web-dev-qa-db-fra.com

Eclipse PDT: "<classe> ne peut pas être résolu en un type" pour les classes php par défaut telles que DateTime, Exception, etc.

Après quelques modifications récentes apportées à Eclipse et aux espaces de travail, j'ai rencontré quelques problèmes de validation de mon code PHP dans PDT. Après avoir rajouté toutes les bibliothèques externes de mes projets, chaque classe externe pouvait être résolue, mais pour les classes de base PHP telles que "DateTime" ou "Exception", un message d'erreur/annotation "Impossible de résoudre le type de date". PHP La version de validation est définie sur 7.1, mais des paramètres encore plus bas créent l'erreur.

Comment puis-je résoudre ce problème de validation?

4
NextThursday

Il y a beaucoup de situations possibles ici; Le mien était un projet assez ancien avec une configuration de buildpath cassée. Cependant, en utilisant l'interface graphique, je n'ai pas pu le réparer.

L'ajout de la ligne suivante au fichier .buildpath du dossier du projet lors de la fermeture d'Eclipse, puis de son redémarrage, résout le problème:

<buildpathentry kind="con" path="org.Eclipse.php.core.LANGUAGE"/>

Cependant, si le code utilise des espaces de noms, vous devez utiliser\DateTime au lieu de DateTime, ou bien ajoutez un "use DateTime" au-dessus;

(Solution trouvée après avoir approfondi les commentaires d'autres problèmes en utilisant Eclipse PDT ne propose pas toutes les fonctions php et https://bugs.Eclipse.org/bugs/show_bug.cgi?id=502184 )

8
NextThursday

Si vous n'avez pas de fichier appelé .buildpath dans le dossier racine de votre projet, créez-le simplement.

Le contenu du fichier devrait ressembler à ceci:

<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
    <buildpathentry kind="src" path=""/>
    <buildpathentry kind="con" path="org.Eclipse.php.core.LANGUAGE"/>
</buildpath>

Cela va assigner tous vos dossiers en tant que "dossiers sources".

Cela fonctionne très bien dans Eclipse Oxygen.3a Release (4.7.3a)

2
David Toledo

Le mien est un peu différent mais il convient de le mentionner ici pour le nouveau venu comme moi.
Je viens d'importer un projet en utilisant Import> Projects from Folder or Archive. C'est juste un dossier ni plus ni moins.
Vous devez cliquer avec le bouton droit sur votre dossier importé> Configure> Convert to PHP Project ... 
L'erreur sur Exception a disparu.

1
nguyentaijs

@NextThursday mentionne l'utilisation de la portée globale en utilisant '\' avant le nom de la classe. Cela n’est important que si votre code est déjà limité dans un espace de noms spécifique.

0
ForJaysSake

J'ai récemment rencontré une situation similaire avec un projet dont le code est sur un serveur de réseau et le serveur est tombé en panne. Quand il a été restauré, les supports ont été modifiés, de sorte que certaines de mes bibliothèques externes sont introuvables. Voici comment je l'ai corrigé:

Dans les propriétés de mon projet-> php-> chemins de source-> onglet bibliothèques de chemins d'inclusion, j'ai ajouté les chemins d'accès au code externe. Ensuite, j'ai exécuté le projet de construction sur mon projet, suivi de l'actualisation. Les avertissements sont partis.

0
Sam