2013-08-30 6 views
7

Not so awesome picturePHPStorm nie może analizować ścieżki ze zmiennej?

Jak widać, pierwsze wymaganie nie daje słabego ostrzeżenia. Ta ostatnia ma, ale nie rozumiem, dlaczego. Czy jest jakikolwiek powód, dlaczego tak się dzieje? Plik istnieje i zawiera klasę. Jeśli jest to przydatne, jest to struktura pliku:

-| Project 
    -| Anomius 
    - Anomius.php (This is the included file) 
    -| Sites 
    -| Foo 
     - app.php (This is the file on the image) 
+4

Tak - ponieważ jest to zmienna, a wartość może zostać zmieniona w KAŻDYM czasie (lub może być nawet przypisana z nieznanego źródła, np. DB). Użyj stałych, jeśli jest to pożądane, ponieważ PhpStorm nie śledzi wartości zmiennych. – LazyOne

+0

Czy próbowałeś kliknąć na link "Więcej ..."? może być bardziej opisowy ... –

+0

@LazyOne Wydaje się, że to jest to. Dzięki za informację :) – RemiDG

Odpowiedz

2

Domyślnie PHPStorm zapamiętuje tylko nazwy zmiennych, a nie wartości. Więc jeśli zaczniesz wpisywać $ano, otrzymasz automatyczne uzupełnianie dla $anomius, ale nie wiesz, co faktycznie zawiera $anomius.

Aby PHPStorm zrozumieć gdzie plik jest, spróbuj tego:

$anomius = "your_file.php"; 
/** @define "$anomius" "/absolute/path/to/your/php/file" */ 
require_once($anomius); 
+1

Jest to raczej bezużyteczne: używasz tam zmiennej dynamicznej z jakiegoś powodu.Jeśli zadeklarujesz to powyżej, jaki jest sens używania zmiennej w Pierwsze miejsce? – user3790897

+0

Tak, jest dynamiczne, ale przynajmniej zachowuje PHPStorm .. Po uruchomieniu skryptu komentarze są i tak ignorowane, więc nie powoduje żadnych problemów, jeśli adres URL pliku jest inny – elipoultorak

+1

Więc twoja odpowiedź w pigułce : nie używaj zmiennej dynamicznej dla require_once Twoja odpowiedź jest w pewnym sensie myląca, ponieważ w tym przypadku po prostu zrobiłby to: require_once ("twój_plik.php"). Dlaczego umieściłbyś to w zmiennej, gdybyś Wiesz już, że to jest wartość? To kompletna bzdura. – user3790897

3

Wystarczy wyłączyć ustawienie w PhpStorm która produkuje ostrzeżenie:

W Settings wyszukiwania dla „nierozwiązane obejmują” który jest pod Editor>Inspections; PHP>General>Unresolved include

i odznacz pole.

+0

Preferuję to rozwiązanie, ponieważ to ostrzeżenie pojawiło się w niestandardowej funkcji "importowania", która akceptuje ścieżki względne do włączania klas, więc nie trzeba umieszczać nazw plików() i "__FILE__" wszędzie, tylko w tej funkcji. –