2014-02-24 42 views
0

如PHP手冊使用變量

模式

模式提及。沒有代字符擴展或參數替換完成。

我試圖在一個變量中查找帶有路徑名的文件,但它不起作用。

加載程序文件(程序中的主函數)需要包含幾個文件,這些文件位於加載程序文件正在處理的當前類文件的同一目錄中。 所以,我試着在加載器文件下面解決。

$cwd = getcwd(); 
$reflector = new ReflectionClass($class_name); //$class_name come from $_GET 
$fname = $reflector->getFileName(); 
$fdir = dirname($fname); 
chdir ($fdir); 
$include_file_name = glob("*.inc"); 
chdir ($cwd); 

它的工作原理,但只是想知道這是一個好的解決辦法或者是有什麼我可以做的。

回答

1

如果您將所有類都放在一個目錄中,則可以相對於當前腳本對其進行相應的硬編碼,這將消除對反射類的需求。例如,如果當前腳本是在/var/www/foo和類是/var/www/classes,只是做:

$include_file_name = glob(__DIR__ . '/../classes' . '*.inc'); 

但是,如果類可以來自多個目錄,使用反射一樣,似乎很適合我,但你也添加$fdir到​​3210字符串,而不是做chdir()這樣的,但當然這只是微優化:

$include_file_name = glob($fdir ."/*.inc"); 
+0

感謝麥克。所有的類文件都在不同的目錄中,並有一定的原因。我嘗試在glob函數中使用變量,但它不工作,我猜glob函數不會做任何變量值替換 – user2959149

+0

@ user2959149你包括他們在單引號? PHP中的字符串是一個字符串。它如何創建並不重要。如果你給它正確的字符串,它會起作用。 – Mike

+0

謝謝邁克。我嘗試了glob中的$ fdir,它確實有效。我錯過了正斜槓。 – user2959149