我认为我的问题确实没有提供足够的见解。
基本上。我希望回显文件名,即使这个函数将从我的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;功能的任何想法?
提前致谢。
答案 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 ?>