Вывод имени файла со страницы включения

Я не думаю, что мой вопрос действительно дает достаточно понимания.

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

Любые идеи о том, как сделать это эхом «индекс», а не «функции»?

Заранее спасибо.

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

Другие решения

Вы должны определить переменную в 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 ?>
0

По вопросам рекламы [email protected]