Aoshi Geschrieben 21. Juni 2010 Geschrieben 21. Juni 2010 (bearbeitet) Hallo, habe ein kleines Problem mit einem Script. Aber hier erstmal der Aufbau: Die datei parameters.php wird in der index.php per require_once includet. Die datei config.php und db.class.php werden in der parameters.php per require_once includet. require_once('../config.php'); require_once('../db.class.php'); [/PHP] In der config.php sind diverse einstellungen wie z.B. SQL host usw. und werden wie folgt getätigt: [PHP]$dbHost = 'localhost' $dbUser = 'root' $dbPw = '123456' Die Variablen sollen nun in die db.class.php übergeben werden, daher wird die config.php in der parameters.php als erstes includet. Die db.class.php sieht ungefähr so aus: class db { public static function query($sData) { define('DB_USER', $dbUser); define('DB_PASSWORD', $dbPw); define('DB_HOST', $dbHost); $sqlConnect = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die('Zurzeit keine Verbindung zum Host!'); $sqlSelectDb = mysql_select_db($sData, $sqlConnect) OR die('die Datenbank '.$sData.' konnte nicht gefunden werden oder es besteht keine Verbindung zum Host'); } }[/PHP] Das Problem ist aber, das er $dbUser und $dbPw von der Config nicht in die klasse übergibt. Habe schon mit echo $dbUser in der db.class.php versucht, doch da kommt nichts bei raus...also werden die variablen in der config nicht an die klasse übergeben. Wende ich echo $dbUser z.B. in der index.php an, so wird mir der username gezeigt, wie es sein sollte. lg Aoshi PS.: Dies ist eine verkürzte form der klasse und daher nicht wirklich aktiv...jedoch habe ich alle relevanten dinge mit eingebracht, damit das problem eventuell gelöst werden kann. PPS.: diese klasse soll einen SQL Server ansteuern und soll nur eine verbindung herstellen, wenn diese benötigt wird, z.B. in logins usw. und damit sie OO ist. Bearbeitet 21. Juni 2010 von Aoshi Zitieren
flashpixx Geschrieben 21. Juni 2010 Geschrieben 21. Juni 2010 Du kannst Variablen nicht so in die Klasse hinbringen. Ich frage mich gerade welchen Sinn Du damit verfolgst. Warum deklarierst Du nicht einfach Deine Zugangsdaten als Konstanten? Wenn Eigenschaften einer Klasse unveränderbar deklariert werden sollen, dann deklariert man die Eigenschaft als const und setzt keine globale Konstante mit define. Zitieren
Aoshi Geschrieben 21. Juni 2010 Autor Geschrieben 21. Juni 2010 (bearbeitet) Der Sin ist, das es eine Config datei gibt, wo man alle benötigten einstellungen machen kann wie z.B. Server host, MySQL Host's, Username usw. Da es mehrere und verschiedene einstellungsmöglichkeiten gibt, wollte ich es vereinfachen, indem ich eine config datei erstelle, wo er alle benötigten dinge herbekommen kann. Wobei ich eh im moment das Problem habe, das er auch keine arrays in die index lässt, auch wenn die arrays includet werden......irgendwie funktioniert bei mir relativ wenig -.- Also genau das gleiche wie vorher auch. Die parameters.php wird in die index.php includet, in der parameters wird die datei arrays.php includet. Doch die arras kann ich in der index.php net nutzen. lg Aoshi^^ Bearbeitet 21. Juni 2010 von Aoshi Zitieren
flashpixx Geschrieben 21. Juni 2010 Geschrieben 21. Juni 2010 Der Sin ist, das es eine Config datei gibt, wo man alle benötigten einstellungen machen kann wie z.B. Server host, MySQL Host's, Username usw. Definiere alle Parameter als Konstanten oder wenn Du OOP Arbeitest bietet sich eine statische Klasse mit konstanten (const) Eigenschaften an. irgendwie funktioniert bei mir relativ wenig -.- Du scheinst das Scoping noch nicht verstanden zu haben. Zitieren
Herzbert Geschrieben 21. Juni 2010 Geschrieben 21. Juni 2010 ich glaube das was du suchst ist das: PHP: Geltungsbereich von Variablen - Manual Zitieren
Aoshi Geschrieben 21. Juni 2010 Autor Geschrieben 21. Juni 2010 @herzbert: vielen dank, funktioniert super. jetzt muss ich das alles nur noch abändern und dann geht es weiter im text^^ lg Aoshi Zitieren
Herzbert Geschrieben 21. Juni 2010 Geschrieben 21. Juni 2010 Ist zwar vielleicht schön, aber ganz persönlich würde ich dir abraten von diesen "globals", und lieber ein Construktor schreiben dem du ein Array übergibst das du mit PHP: parse_ini_file - Manual füllst. gruß Herzbert Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.