web-dev-qa-db-ja.com

Eclipse PDT:DateTime、Exceptionなどのデフォルトのphpクラスの場合、「<class>はタイプに解決できません」

最近のEclipseの更新とワークスペースの変更の後、PDTでのPHPコードの検証に問題が見つかりました。プロジェクトのすべての外部ライブラリを再度追加した後、すべての外部クラスは解決可能でしたが、「[DateTime]」や「Exception」などのPHP基本クラスの場合、エラー/注釈「DateTimeを型に解決できません」が表示されます。 。 PHP検証バージョンは7.1に設定されていますが、それより低い設定でもエラーが発生します。

この検証の問題を解決するにはどうすればよいですか?

5
NextThursday

ここには多くの可能な状況があります。私のはかなり古いプロジェクトで、ビルドパス設定が壊れていました。しかし、GUIを使用して修正することはできませんでした。

Eclipseが閉じている間にプロジェクトフォルダーの.buildpathファイルに次の行を追加し、その後Eclipseを再起動すると問題が解決します。

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

ただし、コードで名前空間を使用する場合は、DateTimeの代わりに\ DateTimeを使用するか、 'use DateTime'を先頭に追加する必要があります。

Eclipse PDTがすべてのphp関数を提案するわけではない および https://bugs.Eclipse.org/bugs/show_bug.cgi?id= 502184

11
NextThursday

プロジェクトのルートフォルダに。buildpathというファイルがない場合は、作成します。

ファイルの内容は次のようになります。

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

これで、すべてのフォルダが「ソースフォルダ」として割り当てられます。

Eclipse Oxygen.3aリリース(4.7.3a)では問題なく動作します

5
David Toledo

鉱山は少し異なりますが、私のような初心者のためにここで言及する価値があります。
Import> Projects from Folder or Archiveを使用してプロジェクトをインポートします。それは単なるフォルダに過ぎません。
インポートしたフォルダーを右クリックする必要があります> Configure> Convert to PHP Project ...
Exceptionのエラーはなくなりました。

2
nguyentaijs

@NextThursdayは、クラス名の前に「\」を使用したグローバルスコープの使用について言及しています。これは、コードが既に特定の名前空間内にスコープされている場合にのみ重要です。

1
ForJaysSake

最近、コードがネットワークサーバー上にあるプロジェクトで同様の状況に遭遇し、サーバーがダウンしました。それが復元されたとき、マウントが変更されていたため、一部の外部ライブラリが見つかりませんでした。これは私がそれを修正した方法です:

私のプロジェクトのプロパティ-> php->ソースパス->インクルードパスライブラリタブで、外部コードにパスを追加しました。次に、プロジェクトでビルドプロジェクトを実行し、続いて更新を実行しました。警告は消えました。

1
Sam

vendorフォルダーからの)ベンダー依存が新しいプロジェクトで認識されないという問題がありました。例えば。コード内にあった場合:

use \Psr\Log\LoggerAwareInterface

インポート...は解決できません」という注記で赤の下線が引かれ、インポート以外では、これらのクラスには「タイプに解決できません」がありました。彼らと。

それでも私は.buildpathが適切に配置されていますが、よく見ると問題が発生しています。

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

そうです、vendorフォルダのエントリはありません。不足しているエントリを追加:

    <buildpathentry kind="src" path="tests"/>
+   <buildpathentry kind="src" path="vendor"/>
    <buildpathentry kind="con" path="org.Eclipse.php.core.LANGUAGE"/>

そして、プロジェクトをクリーンアップ/ビルドすると、問題はすぐに修正されました。

0
sanmai

私の場合、コンポーザーを使用しているので、Eclipseにはビルドパスを更新するオプションがあります。

Composer->ビルドパスの更新

0
naskar