我正在编写一个自动加载函数,并且在它的内部逻辑中,它想测试某个文件是否存在于包含它之前的路径中的某个位置.
这是逻辑:
如果名为的文件$className'.specialversion.php'存在于包含路径中的任何位置,则包括它.否则,让其他自动加载器负责包含此类的文件.
目前我只是这样做: @include($calculatedPath);
我不确定这是否是一个包含和抑制错误的好方法.在包含它之前,我宁愿检查文件是否存在(包含路径中的某个位置).
我的问题是:
@include($calculatedPath);吗?编辑
一个重要的口音:我不知道该文件应该在哪里.我只是想知道它是否存在于include路径的其中一个目录中.所以我不能做file_exists()或类似的事情.
sal*_*the 33
从PHP 5.3.2开始,可以选择使用stream_resolve_include_path()其目的的函数
根据与fopen()/ include()相同的规则,对包含路径解析[a]文件名.
如果文件存在于其中一个包含路径上,则将返回该路径(包括文件名).否则(即文件不在任何包含路径上)它将返回FALSE.
根据您的需求,您的自动加载器可能看起来像:
function my_autoloader($classname) {
$found = stream_resolve_include_path($classname . '.specialversion.php');
if ($found !== FALSE) {
include $found;
}
}
Run Code Online (Sandbox Code Playgroud)