2016-12-23 4 views
1

Je ne pense pas que ma question donne vraiment assez de perspicacité.Echo nom de fichier à partir de la page d'inclusion

Fondamentalement. Je cherche à faire écho le nom du fichier, même si cette fonction sera appelée à partir de mon fichier header.php.

est ici un code pour vous aider à comprendre:

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')); 
    } 

    ?> 

Et enfin ...

header.php

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

Mais, voici le problème, car le code echo ucfirst(basename(__FILE__, '.php')); est dans mon dossier functions.php, il est juste écho le nom du fichier functions.php.

Des idées sur la façon de faire écho 'index', plutôt que des «fonctions»?

Merci d'avance.

+0

Vous pouvez passer '__FILE__' comme argument .. – Devon

+0

Seriez-vous en mesure de démontrer, s'il vous plaît? –

Répondre

1

__FILE__ vous donnera le chemin du système de fichiers de celui où la page en cours .php, pas vous avez inclus ce. Il suffit de passer le nom du fichier à getHeader() fonction, comme ceci:

index.php

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

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

changer ensuite votre functions.php et fichier header.php de la manière suivante,

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

Ce code affiche une erreur 500. S'il vous plaît, corrigez votre code. Merci! –

+0

@JacobPunton Ça marche bien de mon côté. Veuillez vérifier le journal des erreurs de votre serveur. –

+0

Vous êtes une beauté. J'ai manqué le '($ file)' dans le pageTitle. Merci beaucoup! –

0

Vous devez définir une variable dans index.php qui contient le nom de fichier, puis utiliser la même variable pour retourner le nom de fichier comme:

index .php

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

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

fonctions.php

<?php 

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

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

?> 

Pour ce faire plus systématique, vous pouvez le faire de cette façon:

C'est en fait un cas particulier de ce que les moteurs de matriçage PHP faire. Tenir compte ayant cette fonction:

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

Cela n'a pas fonctionné. –

+0

@SnehaMaheshwari, j'ai modifié votre réponse et corrigé quelques problèmes de formatage. J'espère que ça va. –

+0

@RajdeepPaul J'ai vu. Merci pour ça. –