Ergebnis 1 bis 2 von 2

Thema: PHP - Klassenzugriff in anderne Klassen

  1. #1
    User
    Registriert seit
    18.05.2008
    Beiträge
    72

    Standard PHP - Klassenzugriff in anderne Klassen

    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:
    PHP-Code:
    $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-Code:
    <?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;
        }
    .... 
    ?>

  2. #2
    Erfahrener User
    Registriert seit
    11.05.2007
    Beiträge
    202

    Standard

    ...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:
    PHP-Code:
    class UserAuth
    {
      private 
    $db;

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

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

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •