php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.09.2005, 14:44  
Gast
 
Beiträge: n/a
Standard [Erledigt] Klasse einbinden?

Hallo erstmal!

Ich erstelle gerade eine PHP Webanwendung (Objektorientiert). Nun habe ich folgendes Problem, ich möchte die Datenbankanbindung per ADODB erstellen. Das funktioniert soweit auch tool.
Nun gibt es eine etwas schönere Lösung als in jedem Objekt das ADODB Objekt wieder neu zu erstellen? Kann man das ganze allenfals sogar so integrieren das es z.B. wie mysql verwendet werden kann?
Besteb Dank für eure Hilfe.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.09.2005, 15:41  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Wie wärs wenn du das ADODB Objekt außerhalb der Klasse instanziert und den Klassen die darauf zugreifen sollen einfach nur eine Referenz übergibts?
HStev ist offline   Mit Zitat antworten
Alt 29.09.2005, 15:46  
Gast
 
Beiträge: n/a
Standard

Vielleicht ist auch das singleton pattern was für dich.
Einfach mal nach suchen.
  Mit Zitat antworten
Alt 29.09.2005, 17:44  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard Re: Klasse einbinden?

Zitat:
Zitat von MrUnterberg
Nun gibt es eine etwas schönere Lösung als in jedem Objekt das ADODB Objekt wieder neu zu erstellen?
Du wirst ja nicht in jedem Objekt auf die Datenbank zugreifen, oder? Du kannst z.B. mit Data Access Objects arbeiten. Diese bieten dir z.B. für bestimmte Module Methoden an, wie getAllAddresses() oder insertUser() etc. und alle übrigen Objekte greifen nicht auf die Datenbank zu. Diese DAO's leistest du dann von einer Abstrakten Klasse DAO ab, die die ADOdb-Kasse bereit hält - entweder als statische Variable oder, indem du sie als Refernz übergibst oder, indem du dir im Konstruktor die Instanz holst und ADOdb eben als Singleton umsetzt:

PHP-Code:
<?php
abstract class DAO
{
    protected 
$Database;
 
    public function 
__construct()
    {
        
$this->Database Database::getInstance();
    }

    protected function 
escapeString($aVales)
    {
        
// ...
    
}
}

class 
UserDAO
{
    public function 
__construct()
    {
        
parent::__constuct();
    }

    public function 
insertUser($sUsername$sEMail)
    {
        list (
$sUsername$sEMail) = $this->escapeString(array($sUsername$sEmail)); 
        
$sQuery "INSERT ...";
        
$bSuccess $this->Database->execQuery($sQuery);
        if (!
bSuccess) throw ...
     
    }
}

abstract class 
Module
{
    protected 
$DAO;

    public function 
__construct()
    {
        
$this->DAO DAO_Factory::getDAO($this->sModuleName);
    }
}

class 
UserModule extends Module
{
    protected 
$sModuleName;

    public function 
__constuc()
    {
        
$this->sModuleName 'User';
        
parent::__construct()
    }

    public function 
addUser($sUsername$sEMail)
    {
        
// validate data...
        
$bSuccess $this->DAO->addUser($sUsername$sEMail); 
        
// ...
    
}
}

class 
Database
{
    private static 
$Instance;
    private 
$ADOdb;

    public static function 
getInstance()
    {
        if (!isset(
self::$Instance)) self::$Instande = new Database();
        return 
self::$Instance;
    }

    public function 
__construct()
    {
        
$this->ADOdb = new ADONewConnection(...);
    }

    public function 
execQuery($sQuery)
    {
        return 
$this->ADOdb->Execute($sQuery);
    }
}
?>
...oder so in der Art halt.

Basti
Basti ist offline   Mit Zitat antworten
Alt 30.09.2005, 02:22  
Neuer Benutzer
 
Registriert seit: 27.09.2005
Beiträge: 22
nightfreak
Standard

Hallo,

ich habe dafür eine Klasse die Ich Context nenne, diese ist in jeder meiner Klassen verfügbar und enthält neben der Referenz zur DB Connection auch einen OO Zugriff auf die Request Daten und alle weitere Umgebungsvariablen der Anwendung. Also eine Abstract Factory der sich die ganze Anwendung bedient.
nightfreak ist offline   Mit Zitat antworten
Alt 30.09.2005, 14:06  
Gast
 
Beiträge: n/a
Standard

Danke für eure Hilfe! Hab mal google nach "singleton pattern" gefragt. Ist genau das was ich suche. Es hat nicht zufällig jemand von euch das schon mal mit Adodb oder ähndlichem sowas gemacht?
  Mit Zitat antworten
Alt 30.09.2005, 14:29  
Gast
 
Beiträge: n/a
Standard

Zitat:
Es hat nicht zufällig jemand von euch das schon mal mit Adodb oder ähndlichem sowas gemacht?
oder ähnlichem. Das Gute bei patterns ist doch, dass sie weitgehend unabhängig vom konkreten Problem immer ähnlich/gleich umgesetzt werden.

http://www.developertutorials.com/tu...729/page1.html

hm, phppatterns.com ist down. Da war auch eine gute, kompakte Beschreibung.
  Mit Zitat antworten
Alt 01.10.2005, 02:14  
Neuer Benutzer
 
Registriert seit: 27.09.2005
Beiträge: 22
nightfreak
Standard

Ich würde von dem Singleton absehen, "Program to Interfaces and not to Implementations". Das Thema wurde vor einiger Zeit auch schon von den Profis durchgekaut:

http://www.phpfriend.de/forum/ftopic36035.html
nightfreak ist offline   Mit Zitat antworten
Alt 03.10.2005, 13:13  
Gast
 
Beiträge: n/a
Standard

Zitat:
Ich würde von dem Singleton absehen
Wie würdes du den das implementieren?
  Mit Zitat antworten
Alt 05.10.2005, 12:48  
Neuer Benutzer
 
Registriert seit: 27.09.2005
Beiträge: 22
nightfreak
Standard

Ich würde Dir raten nochmal den oben gennanten Thread zu lesen, da steht das nochmal ausführlicher.
Wie ich schon sagte würde ich mir Factory / Abstract Factory bauen, die Du als Parameter jeder Klasse Deines Frameworkes übergibst. Dein Connection Objekt liefert Dir dann die Factory. Die Factory kann dann natürlich immer noch die DB Connection als als Singleton implementieren.
Du solltest Dir mal mal das Mojavi Projekt anschauen, da ist das sehr schön umgesetzt. Ich benutze das selber seit der 2er Version und kann es nur empfehlen.
nightfreak ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
zentrale Klasse für Datenbankanbindung Crypi PHP Tipps 2008 4 01.07.2008 11:13
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
HTML Klasse ecomeback PHP Tipps 2008 6 31.08.2007 22:32
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
MySQL - Klasse: Wie da mysql_close benutzen Igäl PHP Tipps 2006 5 01.10.2006 23:09
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
Klasenname einer nicht instanziierten Klasse DerDesian PHP Tipps 2007 9 30.11.2005 13:13
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
[Erledigt] Führerschein für Klasse A+B.. Preis OK??? Off-Topic Diskussionen 20 13.07.2005 18:44
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Klasse holt sich die Klasse PHP-Fortgeschrittene 9 07.10.2004 11:53
[Erledigt] Brauche Hilfe bei meiner ersten Klasse PHP-Fortgeschrittene 9 24.09.2004 17:09
Klassenobjet in anderer Klasse benutzen inu PHP Tipps 2004 6 19.09.2004 10:58
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php klassen einbinden, php klasse einbinden, adodb in klasse, adodb in php klasse verwenden, zitate einbinden, klassen in php einbinden, eine klasse $klasse in php einbinden, einbinden von objekt klassen in php, adodb in klasse nutzen php, http://www.php.de/php-fortgeschrittene/31634-klasse-einbinden.html, beschreibung adonewconnection, singleton pattern in andere php einbinden, class userdao, einbinden von adodb in class

Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.