2013-08-30 8 views
7

Not so awesome picturePHPStorm, bir değişkenden bir yolu analiz edemiyor mu?

Gördüğünüz gibi, ilk require_once zayıf bir uyarı vermez. İkincisi öyle, ama nedenini anlamıyorum. Bunun gerçekleşmesinin bir sebebi var mı? Dosya var ve bir sınıf içeriyor. onun herhangi bir yararlı olursa, bu dosya yapısı şöyledir: Varsayılan olarak

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

Evet - çünkü bu bir değişkendir ve değer HERHANGİ bir zamanda değiştirilebilir (veya bilinmeyen kaynaktan, örneğin DB'den atanabilir). PhpStorm değişken değerleri takip etmediği sürece, istenirse sabitleri kullanın. – LazyOne

+0

"daha fazla ..." bağlantısını tıklamayı denediniz mi? Daha açıklayıcı olabilir ... –

+0

@LazyOne Bu gibi görünüyor. Bilgi için teşekkürler :) – RemiDG

cevap

2

, PhpStorm tek değişken isimleri değil, değerler hatırlar. Yani, $ano'u yazmaya başlarsanız, $anomius için otomatik tamamlama sağlar, ancak aslında $anomius'un ne içerdiğini bilmez.

PhpStorm sizin dosyanın nerede olduğunu anlaması için, bu deneyin:

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

Bu oldukça işe yaramıyor: bir sebepten dolayı dinamik bir değişken kullanıyorsunuz, eğer yukarıda açıklıyorsanız, değişken kullanmanın ne anlamı var? birincisi? – user3790897

+0

Evet, dinamik, ama en azından PHPStorm'u mutlu tutuyor .. Script çalıştırıldığında, yorumlar yine de yok sayılır, bu nedenle dosya URL'si farklıysa herhangi bir soruna neden olmaz – elipoultorak

+1

Özetle cevabınız : Requi_once için bir dinamik değişken kullanmayın Cevabınız bir şekilde yanıltıcıdır, çünkü bu durumda sadece şunu yapar: require_once ('your_file.php') Bunu neden bir değişkene koyarsınız? zaten değeri nedir biliyor musun? Tamamen saçmalık .. – user3790897

3

Basitçe uyarıyı üreten PhpStorm ayarı devre dışı bırakın: 'çözümlenmemiş dahil' için Settings aramada

altında olan Editor>Inspections; PHP>Unresolved include

ve kutunun işaretini kaldırın.

+0

Bu çözümü tercih ediyorum çünkü bu uyarı, sınıfları dahil etmek için göreceli yolları kabul eden özel bir "içe aktarma" işlevinde ortaya çıktı, dolayısıyla birinin yalnızca bu işlevde dirname() ve '__FILE__' koyması gerekmiyor. –

İlgili konular