函数调用文件特定值?

时间:2015-01-05 16:28:51

标签: php

我在single.php文件中有一个非常简单的函数

<?php function file_nameecho(){
$fnam = basename(__FILE__, '.php'); 
echo $fnam;
}
?>

在other.php文件中调用此函数时。

它仍然显示single.php文件的名称?

5 个答案:

答案 0 :(得分:2)

我认为你将带有这个函数的文件包含在另一个脚本中,现在你想知道为什么名称仍然是带有函数的脚本的名称,而不是调用函数的名称。

(所以我想你做了什么:)。

file1.php:

function file_nameecho() {
    $fnam = basename(__FILE__, '.php'); 
    echo $fnam;
}

file2.php:

include "file1.php";
file_nameecho();

输出将是:

file1.php

这样你的功能就像你想要的那样使用它:

function file_nameecho(){
    $fnam = basename($_SERVER['PHP_SELF'], '.php'); 
    echo $fnam;
}

修改

这应该可以让你获得调用函数的文件名:

function file_nameecho(){
    $fnam = basename(debug_backtrace()[0]["file"], '.php'); 
    echo $fnam;
}

编辑2:

因此,OP要求对所有事情做一点解释:D

  1. 为什么__FILE__会返回定义函数的名称?
  2. __FILE__是一个魔术常量并返回文件名。

    手册中的引用:

      

    解决了符号链接的文件的完整路径和文件名。如果在include中使用,则返回包含文件的名称。

    因此,有关魔术常数的更多信息,请参阅:http://php.net/manual/en/language.constants.predefined.php

    1. debug_backtrace()做什么?
    2. debug_backtrace()生成回溯。这就是我在函数中使用它的原因。您可以使用print_r(debug_backtrace());查看有关数据回溯的所有信息,这也是我在您的情况下发现[0]["file"]的方式。

      有关详细信息,请参阅:http://php.net/manual/en/function.debug-backtrace.php

答案 1 :(得分:0)

http://php.net/manual/en/language.constants.predefined.php __FILE__已解决符号链接的文件的完整路径和文件名。如果在include中使用,则返回包含文件的名称。

答案 2 :(得分:0)

FILE 变量将始终包含访问变量的当前文件的文件名,在您的情况下是#34; single.php&#34;

请查看PHP Manual寻求帮助。

答案 3 :(得分:0)

它会显示&#34;单身&#34;, 文件将是single.php, 你可以看到php FILE manual

答案 4 :(得分:0)

不,它会显示包含文件的页面。 要调用function file_nameecho(),您必须在other.php中强制使用include ('single.php')。 当服务器加载页面时,other.php无法运行带有其他引用的__FILE__页面