
Ne vous est-il pas arrivé le problème suivant : vous incluez un script PHP via un require et ce dernier ne prend pas en compte les variables que vous avez positionnées dans le script parent.
En effet, si vous utilisez le “require” dans vos propres fonctions, alors toutes les variables actives du script seront “cachées”. C’est ce qu’on appelle le scope de variable ou encore la portée des variables.
Heureusement, PHP faisant bien les choses, vous avez la possibilité d’utiliser une fonction magique pour passer des variables : la fonction extract
Voici un exemple d’implémentation pour include un template (par exemple) :
<?php
//parent.php
function requireTemplate($template, $vars)
{
extract($vars);
require $template;
}
$var1 = 'MonContenu';
requireTemplate('enfant.php', array(
'var2' => 'Hello',
'var3' => 'World'
));
Et voici comment se comporte le script enfant :
<?php
//enfant.php
if ( isset($var1) ) echo $var1.'<br/>';
if ( isset($var2) ) echo $var2.'<br/>';
if ( isset($var3) ) echo $var3.'<br/>';
On obtient alors le rendu suivant en appelant parent.php :
// Vide: var1
Hello // var2
World // var3