PHP Datenbank Verbindung in Klassen / Funktionen übergeben

  • Hey


    Bei mir haben die Klassen in PHP bis jetzt immer so ausgesehen:



    und die UserControl.php dann


    Nachdem heute meine Webseite scheinbar zu "groß" wurde und nurmehr die Meldung kam das zu viele Mysql Verbindungen gleichzeitig bestehen dachte ich es würde vielleicht funktionieren wen ich "$db" einfach über die Funktion übergebe ("function getUserData($uId, $db)"). Als ich das bei ein paar Funktionen ausprobiert habe (nachdem ich genügend andere deaktiviert habe das die Seite überhaupt wieder lief) und es funktioniert hab hab ich "mal eben" alle Funktionen darauf umgebaut. Jetzt funktionieren zwar alle Funktionen aber die Seite lädt UNENDLICH lange.


    Da gibts ja bestimmt bessere Wege :D



    Danke schonmal :D

  • Nutzt entweder include_once oder require_once diese Funktion prüft ob die Datei schon geladen wurde.
    Ausserdem deklariere entweder die Variabel $db Global oder erstellt dir eine Statische Funktion die das Datenbank Object($db) zurück gibt. Dann musst du nicht ständig die Datenbank Verbindungen erneut laden

  • Nutzt entweder include_once oder require_once diese Funktion prüft ob die Datei schon geladen wurde.
    Ausserdem deklariere entweder die Variabel $db Global oder erstellt dir eine Statische Funktion die das Datenbank Object($db) zurück gibt. Dann musst du nicht ständig die Datenbank Verbindungen erneut laden

    Ergänzend hierzu: Du hast den Vorteil, dass wenn die Datei nicht inkludiert wurde (nicht gefunden etc.) eine schöne Fehlermeldung erhälst.


    Mal auch eine Info zum Thema:
    Du darfst nicht vergessen, eine MySQL-Verbindung schließt sich immer automatisch nachdem die Seite komplett geparsed worden ist. Das hat den Vorteil, dass keine offenen Verbindungen bestehen bleiben. Es macht dadurch immer Sinn, eine eigene DB-Klasse bzw. DatenbankOB zu haben. Das ist nicht nur komfortabler, sondern auch sicherer.

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • Nutzt entweder include_once oder require_once diese Funktion prüft ob die Datei schon geladen wurde.
    Ausserdem deklariere entweder die Variabel $db Global oder erstellt dir eine Statische Funktion die das Datenbank Object($db) zurück gibt. Dann musst du nicht ständig die Datenbank Verbindungen erneut laden

    Ich werd das mal auf include_once umstellen und wie mach ich das mit der Statischen Funktion? Also soll ich einfach eine Funktion in der Klasse erstellen die $db zurück gibt und diese dann in jeder Funktion innerhalb der Klasse nochmal aufrufen? Würden dann nicht gleich viele Verbindungen zu stande kommen wie wenn ich die verbindung in der jeweiligen Funktion direkt herstelle?



    Ergänzend hierzu: Du hast den Vorteil, dass wenn die Datei nicht inkludiert wurde (nicht gefunden etc.) eine schöne Fehlermeldung erhälst.
    Mal auch eine Info zum Thema:
    Du darfst nicht vergessen, eine MySQL-Verbindung schließt sich immer automatisch nachdem die Seite komplett geparsed worden ist. Das hat den Vorteil, dass keine offenen Verbindungen bestehen bleiben. Es macht dadurch immer Sinn, eine eigene DB-Klasse bzw. DatenbankOB zu haben. Das ist nicht nur komfortabler, sondern auch sicherer.

    Also eine DB Klasse im Sinne von


    Die ich dann in allen weiteren Klassen und im Script verwende anstatt jetzt immer eine "eigene" mysql Verbindung herzustellen.