是否有可能PHP脚本知道另一个脚本是否通过require或require_once调用它?
例如:
if scripta.php calls me do xyz;
if scriptb.php calls me do abc;
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢你的建议.这更像是一个问题,而不是一个实际的问题.我意识到我可以设置一个变量$ caller并在我创建require语句时更新它.我只是想知道是否有另一种方法可以在被调用的文件中执行此操作:)
如果您只是想检查您的文件是否包含在内:
$_SERVER['SCRIPT_FILENAME']将始终返回最初调用的脚本的文件名.(例如"start.php")
常量__FILE__将始终返回其使用的脚本的真实文件名.(例如"library.inc.php")
所以你可以这样做:
if ($_SERVER['SCRIPT_FILENAME'] !== __FILE__) {
echo "script was included!";
}
else {
echo "script was called directly!";
}
Run Code Online (Sandbox Code Playgroud)
如果要区分文件的包含位置:
$include_from = get_included_files();
if (count($include_from) > 1) {
$include_from = $include_from[count($include_from)-2];
}
else {
$include_from = $include_from[0];
}
switch ($include_from) {
case __FILE__:
// not included, called directly
break;
case "/path/to/scripta.php":
// do abc
break;
case "/path/to/scriptb.php":
// do xyz
break;
default:
// do other stuff
break;
}
Run Code Online (Sandbox Code Playgroud)