簡體   English   中英

PhpStorm 不會解析包含使用常量

[英]PhpStorm won't resolve includes using constants

這曾經有效,但最近停止工作。 我認為我的設置沒有任何改變,但我現在已經傾注了幾個小時來確定。 我也檢查過谷歌和SO。 在聲稱“這是在這里回答......”之前,請注意細節。謝謝。 :)


假設和要求

假設我們有兩個文件:

  • <project_root>/index.php
  • <project_root>/folder/file.php

假設我們的項目根目錄是/home/me/project

我們想從 index.php 中包含 file.php。 我們希望 PhpStorm 能夠解析文件路徑並允許我們做一些漂亮的 IDE 事情,比如“轉到聲明”。

什么有效

    require 'folder/file.php';

    require '/home/me/project/folder/file.php';

    $root = '/home/me/project/';
    require $root.'folder/file.php';

什么不再有效

    define('ROOT_DIR', "/home/me/project/");
    require ROOT_DIR.'folder/file.php';

PhpStorm 在鼠標懸停時確實識別出ROOT_DIR的值,但它突出顯示了home並顯示了類似內容: Path '"/home/me...folder/file.php' not found

為什么要使用常量? 為了簡單起見,我省略了不需要說明問題的細節。 我想解決的主要問題是為什么這曾經有效但不再有效,和/或我怎樣才能讓它再次起作用。


對不起,幫不上忙。 真正想要做什么? 以下是我遺漏的細節。 如果我們不能解決主要問題,也許我們可以找到一個好的解決方法。

我正在使用現有的代碼庫。 大多數文件需要一個config.php文件來定義root_dir()以獲取 web/項目根目錄。 PhpStorm 沒有解析這些路徑(可以理解),所以我創建了一個常量來代替它。 無論如何,這更有意義。

在今天的戰斗中,我發現你可以這樣做:

    /** @define "root_dir()" "/home/me/project/" */
    // or
    /** @define "ROOT_DIR" "/home/me/project/" */

如果您將它放在文件中的任何位置,那么 PhpStorm 能夠解析該文件中的所有包含/要求。 但是,它只適用於該文件,即使您嘗試在另一個文件中包含/要求它。 你必須對每個文件都這樣做才能讓它在任何地方工作。 不。 嗯嗯。 不用謝。 我需要以一種 PhpStorm 可以在整個項目中識別的方式引用項目/Web 根目錄的絕對路徑。

@LazyOne 在評論中回答了這個問題。 這是最新版本中的一個錯誤,正在此處跟蹤: https : //youtrack.jetbrains.com/issue/WI-31754

在這得到修補之前,我已經創建了這個工作:

使用Keyboard Maestro ,我創建了一個熱鍵,將@define注釋粘貼到文件頂部並將光標返回到其原始位置。 在此處下載宏 導入並編輯文本。

編輯:您實際上可能需要在常規文本編輯器中編輯文件。 可能需要更改其中一個文件路徑才能在您的系統上工作。

注意:我在 PHPStorm 中使用了 Mac Eclipse 鍵盤布局的修改版本。 我不確定這是否重要。

另外,請注意,您的許多“更改的文件”只會在文件頂部包含此映射,並且此映射可能對您的隊友不正確。 我只是從我的提交中排除了這些更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM