【问题标题】:Get path of parent file from included file in php, I don't need the folder path but the full path of including page从php中包含的文件中获取父文件的路径,我不需要文件夹路径而是包含页面的完整路径
【发布时间】:2015-09-06 06:41:23
【问题描述】:

我有一个可以包含在不同位置的 php 文件。我需要根据包含的文件对要显示的内容制定一些规则。

使用$_SERVER['REQUEST_URI'] 会返回页面本身的路径,而不是包含它的父文件。

【问题讨论】:

  • 你试过this吗?
  • 您可以让包含的文件期望定义一个特定的变量,该变量将在实际包含之前在每个包含上下文中设置/定义。这也会增加更多的语义价值,而不是依赖特定的文件路径来实现不同的行为。
  • @Pedro Pinheiro,这不行,因为它给出了目录路径。所有涉及的页面共享同一个目录。
  • this 呢?
  • @Carsten,我希望将打开和关闭特定功能的逻辑集中在包含的页面本身内,而不是担心在需要添加包含的每个地方添加该逻辑。

标签: php php-include


【解决方案1】:

试试:

<?php
echo $_SERVER['SCRIPT_FILENAME'];

完整列表可在PHP website 上找到。

【讨论】:

  • 这将给出与 $_SERVER['REQUEST_URI'] 相同的结果
【解决方案2】:

我使用 spl_autoload_register 以便在我使用类的实例时加载文件。我把我所有的全局函数作为类的公共静态函数。我的页面中只有一个包含:

require "autoload.php";

页面名称是类的名称,扩展名为 .php。这是我的 autoload.php 页面的代码:

<?php
function my_autoload($sClassName)
{
    // LOAD THE CLASS.
    for($loop=0;$loop < strlen($sClassName);$loop++)
    {
        $thischar = substr($sClassName,$loop,1);
        if (($thischar != "_") && ((!ctype_alnum($thischar)) || (ctype_digit($thischar))))
        {
            // INVALID CLASS NAME.
            echo 'Class ' . $sClassName . ' has invalid characters.';
            return;
        }
    }
    $filename = dirname(__FILE__) . '/' . strtolower($sClassName) . '.php'; 
    if (file_exists($filename))
    {
        require($filename);
    } else
    {
        echo 'Error: file ' . $filename . ' not found looking for class ' . $sClassName;
    }
    return;
}
spl_autoload_register("my_autoload");
?>

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2011-11-24
    • 1970-01-01
    • 2014-03-12
    • 2011-01-08
    相关资源
    最近更新 更多