php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.11.2010, 15:21  
Neuer Benutzer
 
Registriert seit: 22.10.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
makebzimage ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] Best Practice DB Verbindung

Hallo Leute,

ich hab ein Singleton Pattern verwendet für eine Mysqli extended Class.
Nun übergebe ich dem Konstruktur der extendet Mysqli Class immer den Server,
User, Passwort und DB wenn ich die Klasse in einer anderen Klasse aufrufe,
gibt es auch eine Möglichkeit die Argumente in die extended Mysqli zu verschieben, so dass ich diese nicht mehr in anderen Klassen übergeben muss?

lg

makebzimage
makebzimage ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 03.11.2010, 15:26  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Öhm, wieso übergibst du die Werte denn immer wieder, wenn du Singleton nutzt? Das ist doch sinnfrei. Entweder du nutzt Singleton und hast ein Objekt, dass die Zugangsdaten kennt oder du nutzt kein Singleton und hast mehrere Objekte, denen du immer wieder die Zugangsdaten senden musst.

Irgendwie widersprichst du dir selber.
__________________
Frank ist offline   Mit Zitat antworten
Alt 03.11.2010, 15:27  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Bitte was?

1. Singleton bei Datenbank Instanzen ist sehr schlecht, was ist wenn du mal auf eine zweite DB zugreifen willst?

2. Kannst du die Daten doch direkt in der Klasse die die MySQLi Klasse erweitert speichern.
Flor1an ist offline   Mit Zitat antworten
Alt 03.11.2010, 15:37  
Neuer Benutzer
 
Registriert seit: 22.10.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
makebzimage ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hey,

@Frank
Ein Singleton Pattern sorgt dafür dass es nur ein Objekt gibt, ich brauche nur ein Objekt für mein Programm, einmal öffnen, Daten speichern/auslesen und Objekt NULL setzen. Hab das nach der Beschreibung auf dem Buch Design Patterns für PHP gemacht. Mit immer wieder meine ich ich müsste nun die Werte in der einen Methode übergeben, und wieder in der anderen. Aufrufen mit den Parametern in einer Methode. Und das nervt mich.

@Florian
Also eine zweite DB ist nicht angedacht, allerdings dachte ich immer das gerade ein Singleton Pattern für DB großartig ist, weil Programme die sehr oft DB Verbindungen aufbauen zuviel Speicher verbrauchen, und das Singleton sicherstellt das nur ein Objekt aufgerufen wird und nur dieses Speicher verbraucht.
Ja man kann es auch direkt in der Klasse speichern stimmt, dachte mir dabei alles in einer conf zu speichern, weil dort auch noch andere Konstanten mit reinkommen, wie z.B. Pfade für Log oder email-adressen für Support etc.
Hast du schon dass das auch mit einer conf geht?
makebzimage ist offline   Mit Zitat antworten
Alt 03.11.2010, 15:40  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Wo wir gerade beim Thema sind: Ich habe mich mal gefragt ob man das ständige Verbinden zu einer Datenbank nicht umgehen könnte indem man mit Threading / Sockets /... (wie auch immer) ein PHP Script dauerhaft am laufen hat was mit der DB verbunden ist. Also das man nicht mehr direkt zur DB verbindet sondern nur noch mit dem zwischen-Script kommuniziert welches die empfangenen Daten zur DB durchroutet. Verständlich was ich meine? Würde das was an Performance bringen, da dadurch Verbindungswege gekürzt werden? Oder ist meine Idee totaler Schrott?
cycap ist offline   Mit Zitat antworten
Alt 03.11.2010, 15:55  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

@makebzimage: Was ein Singleton ist weiß ich wohl. Aber genau dieses Singleton löst ja das Problem, die Daten dauernd erneut übergeben zu müssen. Wenn du dein Objekt das erste mal erstellst, übergibst du deine Verbindungsdaten (Host, Benutzer, Passwort etc.). Sollen weitere Abfragen durchgeführt werden, nutzt du dein Singleton, um dein Objekt wieder abzugreifen. Dieses ist ja bereits mit der Datenbank verbunden. Wozu musst du also erneut Verbindungsdaten übergeben? Oder willst du mir erklären, dass dir dein Singleton ein Objekt erzeugt, dass du nach deiner einen Abfrage gleich wieder zerstörst? Dann kannst du auch gleich eine Funktion nehmen und brauchst gar kein Singleton mehr.

@cycap. Dazu gibts doch pconnect?!
__________________
Frank ist offline   Mit Zitat antworten
Alt 03.11.2010, 16:05  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
@cycap. Dazu gibts doch pconnect?!
Dann is wohl vor mir schon jemand auf diese geniale Idee gekommen :P aber dennoch kann mir jemand erklären wie das bei mysqli funktioniert? Im Manual steht dazu

Zitat:
5.3.0 Added the ability of persistent connections.
Wird das dann automatisch ab PHP 5.3.0 gemacht oder wie wird das eingeschaltet?
cycap ist offline   Mit Zitat antworten
Alt 03.11.2010, 16:12  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von http://www.php.net/manual/en/mysqli.persistconns.php
To open a persistent connection you must prepend p: to the hostname when connecting.
__________________
Frank ist offline   Mit Zitat antworten
Alt 03.11.2010, 16:13  
Neuer Benutzer
 
Registriert seit: 22.10.2010
Beiträge: 17
PHP-Kenntnisse:
Fortgeschritten
makebzimage ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Frank
Weil der Konstruktur von der extended Mysqli diese benötigt, ich weiß das man die Daten auch in der Klasse speichern kann, nur dachte ich es wäre clever alles in einer seperaten conf.php zu speichern, dann muss ich allerdings die Daten immer dem Konstruktor übergen, was mich letzendlich hier her geführt hat
Mal ein Beispiel was ich so mache:
ich hab verschiedene Klassen, jeder dieser Klassen fasst verschiedene Tätigkeiten zusammen, z.B. die Klasse category, dort soll es Methoden wie add, delete, set und get. Diese Methoden benötigen zum arbeiten halt die DB. Bei add wird ein Objekt erzeugt die daten werden an das objekt übergeben und das Objekt gibt die Daten weiter an die DB.
So habe ich mir das gedacht, leider bin ich in der Welt der OOP noch ein Neuling, und hab bisher dieses Design Pattern Buch gelesen, und möchte das Wissen auch anwenden, dafür habe ich dann das Singleton geschrieben, um nicht soviel speicher zu verbrauchen, nicht weil ich es muss sondern nur wegen dem technischen Anspruch. Deswegen wollte ich auch noch die Zugangsdaten in eine conf.php auslagern, damit man alles zentral konfigurieren kann.
makebzimage ist offline   Mit Zitat antworten
Alt 03.11.2010, 16:20  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

@Frank: aaaah, das hätte man aber auch ruhig auf der Konstruktor-Seite erwähnen oder wenigstens verlinken können...
cycap 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
Quelltext einer bestehenden Anwendung kürzen - Best Practice? jesuspresley PHP Einsteiger 3 22.02.2011 12:18
best practice bei einbindung von JS / CSS files cycap Software-Design 27 26.10.2010 18:42
best practice - OOP Kern und Komponenten in Applikation wiederverwenden Murdoc PHP-Fortgeschrittene 22 23.08.2010 10:10
Tutorial / Best Practice für kl. Windows Server Cluster Plague Server, Hosting und Workstations 1 01.04.2010 22:49
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] php ssh mit einer nativen Verbindung tyel PHP Tipps 2010 4 26.02.2010 08:57
[Erledigt] Mehrer Webseiten über eine Verbindung abfragen 230V PHP Tipps 2009 5 17.03.2009 13:27
MySQL verbindung TeazY PHP Tipps 2008 2 18.12.2007 14:34
Verbindung zu einem MS SQL Server 2005 FireFIghter PHP-Fortgeschrittene 2 23.10.2007 12:03
Performance externe MySQL Verbindung R4v3r Datenbanken 2 20.08.2007 07:47
FTP Verbindung wird abundzu unterbrochen themonk Off-Topic Diskussionen 1 02.01.2006 07:41
persistente MySQL Verbindung und clonen HStev PHP-Fortgeschrittene 16 22.11.2005 13:24
Verbindung zu einer Datenbank im LAN Datenbanken 11 25.09.2005 12:18
[Erledigt] Button an best Tagen zu best. Uhrzeiten wechseln lassen PHP Tipps 2005-2 3 30.07.2005 12:52
[Erledigt] Verbindung auf eine Datenbank Datenbanken 5 07.07.2005 20:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysqli klasse erweitert, php zentrall auf die datenbank klasse zugreifen wie singleton zugangsdaten, db verbindung auslagern php singleton, singleton pattern für db verbindung, php db-verbindung verschiedene klassen, mysqli anmeldedaten übergeben, wo datenbank verbindungsdaten speichern, php db verbindung singleton-pattern, php best singleton, php db singleton best practices, mysqli best practices, php db verbindung in klasse speichern

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:29 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