2016-12-23 4 views
1

Я не думаю, что мой вопрос действительно дает достаточно проницательности.Эхо из имени файла из страницы

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

Любые идеи о том, как сделать это echo 'index', а не 'функциями'?

Заранее благодарен.

+0

Вы можете передать '__FILE__' в качестве аргумента .. – Devon

+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> 
+0

В этом коде отображается ошибка 500. Исправьте свой код. Благодаря! –

+0

@JacobPunton Он отлично работает на моем конце. Проверьте журнал ошибок вашего сервера. –

+0

Вы - красота. Я пропустил '($ file)' в пределах pageTitle. Спасибо! –

0

Вы должны определить переменную в index.php, который содержит имя файла, а затем использовать ту же переменную, чтобы вернуть имя файла как:

индекс .php

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

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

функции.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

Это не сработало. –

+0

@SnehaMaheshwari, я отредактировал ваш ответ и исправил некоторые проблемы с форматированием. Надеюсь, все в порядке. –

+0

@ RajdeepPaul Я видел. Спасибо за это. –

Смежные вопросы