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