• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

variable in funktion verwenden

mustang

Mitglied
hallo leute,
ich habe das problem, dass variablen, die vor einer funktion festgelegt wurden in der funktion selber nicht genutzt werden. wie kann ich das problem lösen, ohne bei jedem funktionsaufruf die variable mit zu übergeben?
gruß mustang
 
du könntest eine globale variable verwenden und deine Variable in der $_SESSION[variable]=wert speichern.
 
ja hab im nachhinein festgestellt, dass ich für mein eigenes cms den tabellen in meiner datenbank einen prefix geben muss. den muss ich über eine variable festlegen und so in jeder datenbankabfrage hinzufügen muss, also auch in einigen funktionen.
ich hab erst eine normale variable verwendet und wollte dann eigtl eine einfache lösung, um das problem zu lösen. ich hab das ganze jetzt mit einer globalen session-variable gelöst.
danke euch :-)
 
Eine Session-Variable ist Unsinn (sorry). :)

Session-Variablen existieren, um nutzerspezifische Daten zwischenzuspeichern, und basieren in aller Regel auf Cookies.

Wenn du eine globale Variable haben möchtest, schreib es so:

PHP:
<?php

$GLOBALS['prefix'] = 'blub_';

function f()
{
    echo $GLOBALS['prefix'];
}

f();

Wenn das Präfix einmal zentral in einer Konfigurationsdatei ablegt werden kann, wäre auch ein Konstante denkbar.

PHP:
<?php

define('PREFIX', 'blub_');

function f()
{
    echo PREFIX;
}

f();

Die beste Lösung wäre eine objektorientierte.

PHP:
<?php

// In einer Konfigurationsdatei (kann auch INI-Format haben oder so)

$config = array(
    'prefix' => 'blub_'
);

// Config-Klasse

class Config
{
    protected $data = array();

    public function __construct(array $configData)
    {
        $this->data = $configData;
    }

    public function get($key)
    {
        if (!key_exists($key, $this->data)) {
            throw new Exception('Config value for ' . $key . ' not set');
        }

        return $this->data[$key];
    }
}

// Klasse, die auf Datenbank zugreift

class Db_Model
{
    protected $tablePrefix;

    function __construct($tablePrefix)
    {
        $this->tablePrefix = $tablePrefix;
    }

    public function getSomethingFromDatabase()
    {
        $q = "SELECT ... FROM `" . $this->tablePrefix . "data`";

        echo $q;
    }
}

// Test

$c = new Config($config);
$m = new Db_Model($c->get('prefix'));
$m->getSomethingFromDatabase();

Aber ich weiß nicht, ob das praktikabel für dich ist. Nimm im Zweifel eine der anderen beiden Lösungen.
 
@mermshaus, gut das du nachgefragt hast. für die Definition eines Tabellenpräfixes ist ne $_SESSION Variable der falsche Weg. Stimmt, da würde ich auch define() verwenden.
 
Zurück
Oben