Klasse in einer anderen Klasse verwerden?

Danke schonmal für die Hilfe,

Also wenn du das übergibst dann hat man eine Referenz (Php 5)...

Gibt es denn eine Möglichkeit das besser zu lösen?
Wollte nun nochmal sauber eine Login-Klasse schreiben und damit es sicher ist, war hat die MYSQL Klasse da (halt gegen SQL INJ.).

Wie würdet Ihr das machen?
 
Hi,

also wenn du bei jedem Seitenaufruf an irgendeiner Stelle die DB nutzt, würde ich mich SnEaKy anschließen und dir zu einem Singleton raten.


Gruß

.:lay-z-cow:.
 
also ich bau auf jeder Seite ne Verbindung auf, da überall was aus der Datenbank geladen wird...

Aber ist es sinnvoll eine Loginklasse mit den mysql funktionen (vererbt) zu erstellen und für das login-system eine eigene connection zu machen und für die anderen sachen das auch? frisst das nicht zeit?
 
Da du fragtest was Singleton ist:
http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)

Es Bedeuted schlichtweg es kann immer nur EIN Objekt dieser Klasse geben. Und auf das greifen alle immer wieder zu.

Die Sinnvollste implementation ist wohl wenn du eine "MYSQL_Server1" Klasse schreibst ihr alles aus MYSQL vererbst und in die Klasse die Logindaten fest hineinschreiben. Und um Multidatenbankverbindungen zu verhindern eben die Datenbankklasse als Singleton anlegen. Wie das aussieht steht auf der wikiseite auch als Beispiel.

Durch die vererbung ist es dann auch möglich andere MySQL Server verbindungen offen zu haben. Und sie nur in einer stelle eben ggf. geändert werden müssen.

Dann kannst du in deiner Login Klasse im Konstruktor dir eine referenz auf die Klasse holen:

PHP:
Class Login {
    var $datenbank;
    __construct(){
        $this->datenbank = MYSQL_Server1::getInstance();
    }
}
}
 
Deswegen ja Singleton.
Eine Singleton Klasse beeinhaltet eine Instanz von sich selbst und es gibt immer nur diese einzige Instanz. Das ist. z.B. sehr praktisch für DB-Klassen, denn von diesen benötigt man nunmal in 99% der Fälle nur eine Instanz.
 
Das hört sich ja gut an und genau so wie ich es wollte (wenn ich es richtig versteh)...

Also nochmal zum wiederholen

ich hab eine mysql klasse und eine Login klasse, wobei ich (wenn ich das aus wiki richtig verstanden hab) die mysql klasse global setze und also damit auch in der login klasse abreiten kann?!

richtig?
 
Die „MySQL“-Klasse müsste etwa wie folgt aussehen:
PHP:
class MySQL {

	private static $instance;

	private function __construct()
	{
	}

	public static function getInstance()
	{
		if( !self::$instance ) {
			self::$instance = new MySQL();
		}
		return self::$instance;
	}

}
Die Instanz wird dann über die statische Methode MySQL::getInstance() geholt.
 
herzlichen dank!

aber noch ne doofe frage ;)
habe bisher zum connecten das verwendet:

PHP:
public function connect()
{
$user = "root";
$password = "";

try
{
    $this->connect = new PDO("mysql:host=localhost;dbname=cdcol", $user, $password);
}
catch (PDOException $e)
{
  echo 'Fehler beim Öffnen der Datenbank: ' . $e->getMessage();
}
}

wie binde ich das jetzt in die neue klasse ein, bzw. wie genau erstelle ich nun ne DB-connection
 
Zuletzt bearbeitet:
Zurück