Portal > Foren > PHP > PHP-Programmierung > Klasse in Klasse verwenden?
Antwort
 
Themen-Optionen
Alt 05.09.2007, 18:31 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 20.09.2006
Beiträge: 2
Standard Klasse in Klasse verwenden?

Moinsen,

ich steh gerad völlig auf dem Schlauch...

Mein Problem ist folgendes, ich habe eine Klasse erstellt namens Mysql, dies ist eine Datenbankklasse, die ich vor einiger Zeit mal erstellt habe.

Nun möchte ich eine Loginklasse erstellen, da man immer wiederkehrende überprüfungen braucht. Daher wollte ich eine Loginklasse erstellen. Meine Frage ist nun, wie kann ich dann innerhalb meiner Loginklasse die Mysql Klasse verwenden und die Funktionen in der Mysql Klasse aufrufen?

Gruß
Daniel
goelliboy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.09.2007, 19:14 Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 298
Standard

So wie du sie im restlichen Code auch verwendest. :O
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.09.2007, 21:10 Nach oben    #3
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Hi Daniel.

Du übergibst das MySql-Objekt einfach dem LogIn-Objekt:
PHP-Code:
<?php

$MySql 
= new MySql($MyConfig);
$MySql->connect();

$Session = new Session;
$Request = new Request;

$LogIn = new LogIn($Session$MySql);
$LogIn->execute($Request);

class 
LogIn
{
    protected 
$Session;
    protected 
$MySql;

    public function 
__constuct(Session $SessionMySql $MySql)
    {
        
$this->Session $Session;
        
$this->MySql   $MySql;
    }

    public function 
execute(Request $Request)
    {
        
$User $this->getUserByUsername($Request->get('username'));

        
$bSuccess false;
        if (!
is_null($User) && $User->password === $Request->get('password')) {

            
$this->Session->regenerateId();
            
$this->Session->set('user'$User->id);
            
$bSuccess true;
        }

        return 
$bSuccess;
    }

    protected function 
getUserByUsername($sUsername)
    {
        
$Result $this->MySql->query('SELECT … FROM … WHERE `username` = "%username%"', array('username' => $Request->get('username')));
        if (!
is_null($Result))
            return new 
User($Result);
    }
}
Oder wie auch immer du das machst…

Basti

Geändert von Basti (05.09.2007 um 21:19 Uhr).
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 09:16 Nach oben    #4
Neuer Benutzer
 
Registriert seit: 18.07.2007
Beiträge: 2
Standard

Oder die MySQL Methoden statisch aufrufen:

MySQL::query();
rebel4s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 14:05 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Da es ja durchaus auch mehrere Datenbankobjekte geben kann, ist das nicht generell machbar.

@goellyboy:
Kannst ja auch mal hier reinschauen: http://reeg.junetz.de/DSP/node24.html
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 14:37 Nach oben    #6
Das Struct
 
Benutzerbild von phpdev
 
Registriert seit: 18.08.2007
Ort: Bremen
Beiträge: 15
Standard

Hallo,

ich habe in meiner Session Klasse eine Instanz der MySQL Klasse erzeugt:

PHP-Code:
$this->mysqldb_instance = new MysqlDB(); 
Ich weiss aber nicht ob das so die beste Lösung ist
phpdev ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 14:43 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Zitat:
Zitat von phpdev Beitrag anzeigen
ich habe in meiner Session Klasse eine Instanz der MySQL Klasse erzeugt:

PHP-Code:
$this->mysqldb_instance = new MysqlDB(); 
Ich weiss aber nicht ob das so die beste Lösung ist
Fraglich. In aller Regel brauchst du ja nur eine Sitzungssteuerung, wenn du auch Daten persistent speicherst und dafür wirst du sicher auch die Datenbank verwenden. Ein MySql-Objekt in einem Session-Objekt zu bauen würde für mich nur Sinn machen, wenn das MySql-Objekt entweder außerhalb des Session-Objektes nicht benötigt würde, oder wenn es einen Sinn machen würde, dass sich andere Klienten die Datenbankverbindung aus der Session ziehen, das Session-Objekt also als Factory oder auch als Wrapper, Adapter etc. fungieren soll. Hier fehlt es mir allerdings an der nötigen Phantasie für eine sinnvolle Anwendung.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 16:47 Nach oben    #8
Das Struct
 
Benutzerbild von phpdev
 
Registriert seit: 18.08.2007
Ort: Bremen
Beiträge: 15
Standard

Wäre das vererben nicht noch eine bessere Möglichkeit ?
Weil ich in einigen dateien die mysqldb klasse nicht benötige und auch keine instanz erzeuge

Geändert von phpdev (06.09.2007 um 16:54 Uhr).
phpdev ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 16:50 Nach oben    #9
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Nein, eine Vererbung wäre an dieser Stelle nicht angebracht.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 16:54 Nach oben    #10
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

Sinnvoll wäre vielleicht die Speicherung in einer Art Registry (z.b. Zend_Registry) oder die Implementierung als Singleton so kannst du von überall auf eine einmal instanzierte Klasse zugreifen.
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.09.2007, 21:32 Nach oben    #11
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Was ist denn so kompliziert daran? Ein Objekt (Session) benötigt eine Datenbankanbindung, also übergibst du ihm das Objekt MySql, dass die gefragte Verbindung enthält.

Wenn irgendwann mal mehrere Objekte immer wieder die gleiche Zusammenstellung einiger Objekte, wie z.B. Datenbank, Session, Request und Anwendungs-Konfiguration benötigen kannst du den Krempel ja in eine Registry zusammenpacken, die quasi die Umgebung deiner Anwendung repräsentiert, um dir ein paar Parameter einzusparen.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.09.2007, 10:25 Nach oben    #12
Neuer Benutzer
 
Registriert seit: 20.09.2006
Beiträge: 2
Standard

Vielen Dank für eure Antworten, habe es fast so gemacht wie Basti
goelliboy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.09.2007, 11:43 Nach oben    #13
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Zitat:
Zitat von goelliboy Beitrag anzeigen
habe es fast so gemacht wie Basti
Das war nur ein Beispiel, nichts, was ich hier verwende.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klasse verfügbar machen jjelliss PHP-Programmierung 7 09.09.2007 15:36
Wert Varible in Listener anderer Klasse nutzen??? risa Desktop-Applikationen und Grafik 1 03.04.2006 07:36
Design für eine Klasse js-mueller Allgemeine Java-Programmierung 1 12.03.2006 19:23
Klasse laden per Dateiname (!=Klassenname) Sayang Allgemeine Java-Programmierung 5 01.03.2006 11:35
DB Klasse Problem, vererben, kombinieren ex³ PHP-Programmierung 7 05.02.2006 17:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:50 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44