在 glob 函数路径中使用变量



>如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);

有效,但只是想知道它是否是一个很好的解决方法,或者我还能做些什么。

如果你的所有类都在一个目录中,你可以相对于当前脚本对它进行硬编码,这将消除对反射类的需求。例如,如果当前脚本在/var/www/foo中,而类在/var/www/classes中,只需执行以下操作:

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

如果类可以来自多个目录,那么使用这样的反射器对我来说似乎很合适,但是您也可以将$fdir添加到glob()字符串中,而不是像这样执行chdir(),但当然这只是微优化:

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

最新更新