FOL9000

In php Parameter an ein inkludiertes Script übergeben

von | Keine Kommentare

Mit include oder require eine php-Datei inkludieren zu können, ist vor allem bei der Entwicklung von User-Interface-Code eine sehr praktische Sache. Will man aber mehr, als nur eine Seite aus ein paar Templates (z.B. für Header oder Footer) zusammenzubauen, stößt man schnell an Grenzen. Was z.B., wenn man an das inkludierte Script Parameter übergeben muss? Wie so oft, ist die Lösung ganz einfach.

Die wirklich sehr einfache Lösung besteht darin, den Geltungsbereich von Variablen lokal zu einer Funktion auszunutzen. Man definiert die Variablen, die man in der externen, inkludierten php-Datei zur Verfügung haben möchte, innerhalb einer Funktion; dann sind sie in der inkludierten Datei ‚global‘ sichtbar. Das ist umständlicher zu erklären, als es in der Praxis ist. Die paar Zeilen Code erklären sich praktisch von selbst:

function requireWith($file, $flags=EXTR_OVERWRITE, $prefix=null)
{
    extract($vars, $flags, $prefix);
    require $file;
}

Die extract()-Funktion werden viele wohl eher selten benutzen — hier ist mal ein schöner Anwendungsfall. Sie deklariert aus dem übergebenen Array für jedes Array-Element eine Variable mit dem Key-Namen. In diesem Zusammenhang nicht ganz unwichtig: Man kann die neuen Variablen auch automatisch mit einem Präfix versehen lassen. (Für die Parameter $flags und $prefix vgl. die php-Dokumentation zu extract(), sie sind für das Verständnis hier nicht so wichtig).

Folgendes Beispiel zeigt eine einfache Anwendung:

<?php

function requireWith($file, $vars, $flags=EXTR_OVERWRITE, $prefix=null)
{
    extract($vars, $flags, $prefix);
    require $file;
}
 
// Nicht sichtbar in requiredFile.php
$var1 = 'Hallo!';
 
// 'var2' und 'var3' als Variablen erzeugen und übergeben
requireWith('requiredFile.php', 
  array(
    'var2' => 'Bonjour!',
    'var3' => 'Tach!'
));

Das ganze funktioniert übrigens nicht nur mit require, sondern auch mit include.

Interessant auch, dass man so Variablen nicht nur übergeben kann. Sie können in der inkludierten Datei auch einen beliebigen Namen haben. Der Name muss nur ein ein gültiger Array-Key und ein gültiger Variablenname sein. Zusammen mit der angesprochenen Möglichkeit mit extract() ein Präfix zu nutzen, ist man so extrem flexibel.

Ich will mich natürlich nicht mit fremden Federn schmücken: Das kommt nicht von mir, ich habe es aus dieser Quelle, für die ich hier gern Werbung mache: https://www.flynsarmy.com/2010/01/passing-variables-to-a-required-script-in-php/.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.