php Variable in Klasse bekannt machen
-
Hallo,
ich fange gerade mit etwas php an und stehe nun vor einem kleinen Problem.
Ich habe eine php Datei ind der ein Array mit Datenbanktabellen definiert ist.
Nun habe ich in einer anderen php Datei eine Datenbankklasse mit Funktionen,
welche eben auf die verschiedenen Tabellen aus dem Array zugereifen müssen.Meine Frage ist nun, wie mach ich dieses Array am besten bekannt in der Klasse bzw. in den einzelnen Funktionen?
Bis jetzt ist es so gelöst:
Datei 1:$tables = array(); $tables[0] = 'Tabelle001'; $tables[1] = 'Tabelle478'; $tables[2] = 'Tabelle23';
Datei2:
class db { var $datenbank; var $spacer; function db( $db ) { $this->datenbank = $db; $this->spacer = 0; } function getname( $id=0 ) { global $tables; . . } }
Nun weiß ich nicht ob das mit dem global so ne tolle Idee ist. Wie würdet ihr das lösen?
-
Warum packst du dass Array nicht einfach in die Klasse?
class db { public $datenbank, $spacer, $tables; public function __construct($db) { $this->tables = array('Tabelle001', 'Tabelle478', 'Tabelle23'); $this->datenbank = $db; $this->spacer = 0; } public function getname($id) { // Wieso sollte da eine Default-Value hin? if(isset($this->tables[$id])) return $this->tables[$id]; else return NULL; } }
Falls du es (aus welchen Gründen auch immer, mir fallen zumindest keine ein
) nicht in die Klasse packen kannst, dann implementier am besten eine set_tables()-Funktion, in der kannst du dann zu einer Membervariable der Klasse referenzieren!
Hat es einen speziellen Grund, warum du versuchst, PHP4 zu lernen?
Zumindest das Klassenmodell wird so in naher Zukunft nicht mehr unterstützt werden, ich empfehle dir daher (wenn nich etwas sehr gewichtiges dagegen spricht) gleich mit PHP5 anzufangen!
-
Nun ich benötige die Variable $tabelle in der Tat noch in anderen php dateien.
Warum ich noch php4 nutze? Nun ja, mein Webhoster unterstüzt kein php5 und ich weiß auch nicht ob sich das ändern wird.
Ich werde mal trotzdem versuchen gute Tutorials über das php5 Kalssenmodell zu finden.
Kennst du zufällig schon welche?
-
Mhh ... Naja gut, wenn's denn PHP4 und in 2 Dateien sein soll
// ACHTUNG: Pseudocode! class db { var $datenbank, $spacer, $tables; function db($db, &$tables) { $this->tables = &tables; $this->datenbank = $db; $this->spacer = 0; } function getname($id) { // Wieso sollte da eine Default-Value hin? if(isset($this->tables[$id])) return $this->tables[$id]; else return NULL; } }
Was Tutorials angeht, sind mir leider keine wirklich guten Online-Versionen (da die meisten leider noch auf PHP 4 basieren) bekannt, aber mit ein bisschen Google sollte sich da was finden lassen :p
-
global ist hier eine gute idee.
uU willst du $tables mehr abstrakt machen, aber wenn es wirklich nur eine liste von tabellen ist, passt es so.
habe keine angst vor globalen variablen: die machen auch mal sinn.
-
Ansichtssache. Ich persöhnliche versuche Variablen im globalen Namespaces komplett zu vermeiden (notfalls emuliere ich einen Namespace durch eine static class). Spätestens wenn er seinen Code mal wo anders einfügt und es da auch eine Variable $tables gibt wird es gehörig krachen.