一个包含的PHP文件可以知道它包含在哪里吗?
发布时间:2020-12-13 13:38:59 所属栏目:PHP教程 来源:网络整理
导读:例如, 这是index.php ?require_once('header.php');? 可以通过header.php知道它是否包含在index.php中? – 编辑 – 我找到了一个解决方案: function backtrace_filename_includes($name){ $backtrace_array=debug_backtrace(); if (strpos($backtrace_arra
例如,
这是index.php <? require_once('header.php'); ?> 可以通过header.php知道它是否包含在index.php中? – 编辑 – 我找到了一个解决方案: function backtrace_filename_includes($name){ $backtrace_array=debug_backtrace(); if (strpos($backtrace_array[1]['file'],$name)==false){ return false; }else{ return true; } } header.php文件 <? if (backtrace_filename_includes('index.php')) echo "index.php"; ?>
而
$_SERVER['PHP_SELF'] 将包含当前执行的脚本,没有办法从包含的文件确定哪个特定的脚本导致包含.
这意味着如果a.php包括b.php,其中包括c.php,c.php将无法知道b.php是包含者.最好的是,a.php是当前正在执行的脚本. 编辑:Yup,我的上述答案在技术上是错误的 – 你可以使用 a.php只会: <?php echo 'A'; include 'b.php'; b.php: <?php echo 'B'; include 'c.php'; c.php: <?php echo 'C'; print_r(debug_backtrace()); 输出: ABCArray ( [0] => Array ( [file] => /tmp/b.php [line] => 3 [function] => include ) [1] => Array ( [file] => /tmp/a.php [line] => 3 [args] => Array ( [0] => /tmp/b.php ) [function] => include ) ) 所以当这个工作,你可能不应该使用它.当过度使用时,debug_backtrace可能是一个明显的性能阻力. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |