Я не думаю, что мой вопрос действительно дает достаточно понимания.
В принципе. Я пытаюсь повторить имя файла, хотя эта функция будет вызываться из моего файла 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.
Любые идеи о том, как сделать это эхом «индекс», а не «функции»?
Заранее спасибо.
__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>
Вы должны определить переменную в 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 ?>