PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP - Klassenzugriff in anderne Klassen



owned139
14.03.2012, 22:44
Ich habe eine Klasse für die DB Verwaltung (Connect/Insert etc.) und eine Klasse für die User Verwaltung (Login/logout etc). Die beiden klassen werden in der Datei index.php initiiert und definiert.
Jetzt habe ich aber das Problem, dass ich auch in der User Verwaltungsklasse zugriff auf die DB verwaltung brauche...um z.b. zu überprüfen, ob ein user existiert. Dies habe ich gelöst, indem ich das ganze Objekt der DB Verwaltung übergebe und in einer Klassenvariable speicher.
Meine Frage ist, gibt es dafür keine saubere/bessere Lösung?

Hier nen bisschen Code:
index.php:


$system['class']['dbhandle'] = new dbwrapper('mysql');
$system['class']['dbhandle']->connect('localhost','root','');
$system['class']['dbhandle']->selectdb('cms');
$system['class']['userhandle'] = new userauth($system['class']['dbhandle'], $system['class']['sessions']);
Userverwaltung:


<?php
class userauth{
private $obj = array();

function __construct($dbObj, $sessionObj){
$this->setDBobj($dbObj);
$this->setSessionObj($sessionObj);
}

function setDBobj($obj){
$this->obj['DB'] = $obj;
}

function setSessionObj($obj){
$this->obj['SESSION'] = $obj;
}
.... ?>

LeGaN
21.03.2012, 17:45
...das ist die saubere Lösung, wenn Du das DB-Object als Referenz übergibst. Ansonsten erstellst Du eine Kopie, die Überflüssig ist und, falls Du sowas wie $db->close() aufrufst, nicht die Verbindung des DB-Objects in deiner Objectvariable in userauth geschlossen wird.

Also:


class UserAuth
{
private $db;

public function __construct(DataBase &$db)
{
$this->db=$db;
}
}

$db=new DataBase();
$user_auth=new UserAuth($db);