PHP - Best Practice für die Übergabe von Variablen Include-Dateien

Dies ist mehr eine "Wie sollte ich? "anstatt" Wie tun ich?' Frage.

In der Regel, was als der beste Weg zur übergabe von Variablen an eine Datei enthalten?

Zum Beispiel, sagen wir, ich bin mit einem fragment für ein Menü, und wollen eines der Menüelemente aus (das aktuelle) eine bestimmte Klasse name (dies ist eine sehr generische Probe - nicht etwas, was ich bin tatsächlich mit):

<?php
$links = array(
    array('text' => 'home', 'href' => 'home.php'),
    array('text' => 'about', 'href' => 'about.php'),
    array('text' => 'contact', 'href' => 'contact.php') 
);
?>
<ul>
<?php for($i = 0; $i < 3; $i++) : 
    $link = $links[$i];
    $is_active = ($i == $active_index);
?>
    <li><a <?=($is_active ? 'class="active"' : '')?> href="<?=$link['href']?>"><?=$link['text']?></a></li>
<?php endfor; ?>
</ul>

ich rufe die oben 'menu.inc.php'. offensichtlich sieht es für eine variable (int) aufgerufen $active_index zu bestimmen, die einen link zu geben '.active' - Klasse.

so könnte man einfach definieren $active_index vor dem Aufruf die gehören, aber dies scheint wie eine schlechte Praxis, um mir da vielleicht eine variable mit diesem Namen könnte die definiert worden sind, etwas anderes zu früheren und einen späteren Teil des Skriptes ist immer noch auf der Suche für Sie.

oder - Sie können einen absoluten Pfad und fügen Sie Variablen mit einem querystring (include 'menu.inc.php?active_index=1'), aber das scheint wie eine schlechte Idee, da brauchst du die 'echte' $_GET innerhalb einer bestimmten include.

oder - Sie können beginnen, jedes enthaltene Datei mit ob_start und zurück ob_end_clean(), dann verwenden Sie etwas wie diese zu bekommen, die Rückkehr:

function load_view($file, $variables){
  extract($variables);
  return include($file);
}
//passed like
<?=load_view('menu.inc.php', array('active_index' => 2))?>

aber auch dies scheint eine Reihe von Nachteilen (mit bis zu restrukturieren, alle Ihre include-Dateien entsprechend mit den ob Funktionen und eine return - Anweisung).

InformationsquelleAutor momo | 2011-02-09
Schreibe einen Kommentar