Gültigkeitsbereiche Variablen
makaio
- php
Hi!
Ich möchte mittels folgender Funktion "container" in meiner index.php Content-Boxen generieren:
*** index.php ***
<?php require_once "includes/db_connect.php"; ?>
[...]
<?php
function container ( $title, $con ) {
?>
<div class="container">
<div class="container_title"><?php echo $title; ?></div>
<div class="container_con"><?php require_once $con; ?></div>
</div>
<?php
}
?>
***
Allerdings ist nun das in der require_once-Anweisung eingebundene Skript nicht mehr in der Lage auf die in db_connect.php definierten DB-Verbindungsdaten und die dort ebenfalls via require_once eingebundenen globalen Variablen mit den Tabellennamen zuzugreifen.
Ich habe in der Funktion schon separate Einbindungsanweisen (require_once) für db_connect.php und globals.php ausprobiert, aber das klappt nicht. Bisher habe ich es nur zum Laufen bekommen, wenn ich jede notwendige Variable mittels der global-Anweisung verfügbar gemacht habe.
Es muß doch aber noch eine andere Möglichkeit geben, ohne alle Variablen als global definieren zu müssen.
Gruß,
Matthias
hi,
function container ( $title, $con ) {
?>
<div class="container_con"><?php require_once $con; ?></div>Allerdings ist nun das in der require_once-Anweisung eingebundene Skript nicht mehr in der Lage auf die in db_connect.php definierten DB-Verbindungsdaten und die dort ebenfalls via require_once eingebundenen globalen Variablen mit den Tabellennamen zuzugreifen.
require/include wirken grob vereinfacht gesprochen nur wie ein copy&paste des codes an diese stelle.
der code wird also erst dann ausgeführt, wenn du die funktion aufrufst. und hat dann demzufolge auch nur zugriff auf die variablen, auf die jede direkt in der funktion notierte anweisung auch zugriff hätte.
also entweder gloable variablen verwenden, oder an die funktion übergeben wie andere variablen auch.
(btw: du kannst natürlich auch arrays an funktionen übergeben. könnte u.U. helfen, es bei einer vielzahl von variablen übersichtlicher zu gestalten.)
und sieh dir bezüglich des geltungsbereiches ("scope") von variablen in php auch mal http://www.php.net/manual/de/language.variables.scope.php an.
gruss,
wahsaga
Hello,
(btw: du kannst natürlich auch arrays an funktionen übergeben. könnte u.U. helfen, es bei einer vielzahl von variablen übersichtlicher zu gestalten.)
...und offen zu halten. Wenn als Übergabeparameter ein Array erwartet wird, dann hat man die Möglichkeit, die Funktion ständig zu erweitern, ohne damit ältere Programmversionen, die diese Version auch nutzen, zu gefährden. man muss nur dafür sorgen, dass die Funktion immer das macht, was zur Anzahl der Übergabeparameter passt. Genauso funktioniert das DLL-Konzept.
Da PHP sowohl numerisch indizierte als auch assoziative Arrays kennt, ist die DLL-Methode also vollständig nachgebildet. Man bräuchte eigentlich keine OOP mehr in PHP, wenn die Namensräume vernünftig trennbar wären.
[OOP in PHP wird erst dann wirklich interessant, wenn es eine IDE gibt...]
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo makaio!
<?php require_once "includes/db_connect.php"; ?>
function container ( $title, $con ) {
[...] Bisher habe ich es nur zum Laufen bekommen, wenn ich jede notwendige Variable mittels der global-Anweisung verfügbar gemacht habe.
Es muß doch aber noch eine andere Möglichkeit geben, ohne alle Variablen als global definieren zu müssen.
Naja, muß es eigentlich nicht, wozu auch?
Wenn Du eine globale Variable irgendwo brauchst, schreibs eben dazu ;)
Aber vielleicht hilft Dir ja http://de2.php.net/manual/en/reserved.variables.php#reserved.variables.globals weiter.
MfG
Götz