加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

一个包含的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,我的上述答案在技术上是错误的 – 你可以使用debug_backtrace找到调用者,即使没有函数,直到PHP 5.4,这删除了这个功能.

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可能是一个明显的性能阻力.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读