从包含页面回显文件名

时间:2016-12-23 17:47:42

标签: php filenames

我认为我的问题确实没有提供足够的见解。

基本上。我希望回显文件名,即使这个函数将从我的header.php文件中调用。

这里有一些代码可以帮助您理解:

的index.php

      <?php include 'functions.php'; ?>

      <!DOCTYPE html>
      <html lang="en-gb">
        <?php getHeader(); // Get header ?>
      </html>

的functions.php

    <?php

    // Get header
    function getHeader(){
        include 'header.php';
    }

    // Get filename
    function pageTitle(){
        echo ucfirst(basename(__FILE__, '.php'));
    }

    ?>

最后......

的header.php

<head>
    <title><?php pageTitle(); ?></title>
</head>

但是,这就是问题所在,因为代码echo ucfirst(basename(__FILE__, '.php'));位于我的functions.php文件中,它只是回显了functions.php文件名。

有关如何使其回应&#39;索引&#39;而不是&#39;功能的任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:1)

__FILE__将为您提供当前 .php 页面的文件系统路径,而不是您已将其包含在其中的路径。只需将文件名传递给getHeader()函数,如下所示:

<强>的index.php

<?php include 'functions.php'; ?>

<!DOCTYPE html>
<html lang="en-gb">
<?php getHeader(ucfirst(basename(__FILE__, '.php'))); ?>
</html>

随后按以下方式更改 functions.php header.php 文件,

<强>的functions.php

<?php
    // Get header
    function getHeader($file){
        include 'header.php';
    }

    // Get filename
    function pageTitle($file){
        echo $file;
    }
?>

<强>的header.php

<head>
    <title><?php pageTitle($file); ?></title>
</head>

答案 1 :(得分:0)

您必须在 index.php 中定义一个包含文件名的变量,然后使用相同的变量返回如下文件名:

<强>的index.php

<?php $includerFile = __FILE__; ?>
<?php include 'functions.php'; ?>

<!DOCTYPE html>
<html lang="en-gb">
<?php getHeader(); // Get header ?>

<强>的functions.php

<?php

    // Get header
    function getHeader(){
        include 'header.php';
    }

    // Get filename
    function pageTitle(){
        echo ucfirst(basename($includerFile, '.php'));
    }

?>

为了使它更系统化,你可以这样做:

这实际上只是PHP模板引擎的特例。考虑具备这个功能:

<强>的index.php

<?php

    function ScopedInclude($file, $params = array())
    {
        extract($params);
        include $file;
    } 

    ScopedInclude('functions.php', array('includerFile' => __FILE__));

?>

<!DOCTYPE html>
<html lang="en-gb">
<?php getHeader(); // Get header ?>