2015-03-19 104 views
1

當我requireinclude PHPStorm中的文件時,它無法檢測到主文件中定義的變量正在被需要/包含的文件中使用。與包含/必需文件中的變量相同,它顯示爲未定義。如何設置PHPStorm檢查所需/包含文件中的變量用法?如何檢查必需/包含文件中的變量定義?

下面是清晰的例子:

主文件(假設main.php):

<?php 
$var1 = "hi"; 
require "next.php"; 

雖然這裏是 「必需的」 next.php文件:

<?php 
echo "<p>".$var1."</p>"; 

的代碼工作正常但在PHPStorm上,$var1main.php文件中顯示爲未使用,但在中顯示爲未定義文件。

我見過幾個關於如何禁用警告的答案,但這不是我想要的。我希望PHPStorm分別識別被調用模塊和調用模塊中使用和定義的變量。

這可能嗎?或者我問錯誤的問題?

如果有人想知道爲什麼我這樣做,我試圖從結構ala-MVC中分離邏輯。

回答

4

問題是,只看next.php本身,該變量是明確未定義的。不能保證如何執行next.php。您不能將文件限制爲僅在從其他文件包含時執行。你可以自己執行這個文件,在這種情況下它會失敗。或者你可以從無限多的其他文件中設置這個變量,在這種情況下它會失敗。

這就是爲什麼PhpStorm嘮叨你這個未定義的變量。它錯誤的編碼風格,因爲它可以在任何情況下失敗。

+0

好的明白了你的意思,但這是否意味着我們應該避免MVC? – Paolo 2015-08-14 05:02:53

+0

MVC不排除適當的變量傳遞。如果你把所有的東西都寫成帶有明確參數的函數或類,並且使用一個模板化的系統來分離變量(例如Twig)或者你至少使用PhpStorm的必要註釋,它就不會抱怨。 – deceze 2015-08-14 05:39:37

+0

我明白了。我會接受這個答案。 – Paolo 2015-08-14 06:37:01

0

有很多問題爲什麼默認情況下沒有在PhpStorm中實現。 我只能建議你爲你的項目創建自定義插件,我可以幫你做到這一點。

您可以使用自定義goto插件查看視頻。這與你的問題有關。在視圖文件中導航到控制器文件中定義的變量。 https://www.youtube.com/watch?v=bVy2MJGJ6LM

+0

我想你是說,而不是遵循常規的MVC風格,我們應該使用類而不是? – Paolo 2015-08-14 05:05:25