php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.03.2007, 16:15  
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

Naja es läuft so das ich eben in meiner header.php die Klasse initialisiere und dann kann ich im Skript einfach mit $db->query(...); etwas aufrufen und in der footer.php steht dann nochmal $db->close(); und die Klasse selber macht das mit dem Connect zur DB.

Also die Klasse macht solange nichts bis das erstemal query() aufgerufen wird. Dadurch verbindet sie sich zur Datenbank und sendet den Query. Und wenn close() aufgerufen wird schaut die Klasse ob überhaupt eine Verbindung erstellt wurde, wenn ja dann schließt sie die Verbindung ansonsten tut close() nichts.

Ich hab z.B. in meiner Klasse nen paar Sachen anders gemacht als sie die mysql Funktionen machen würden. Z.B. kann ich $db->fetch_array("SELECT * FROM table"); aufrufen. Die Funktion fetch_array() schaut dann ob der übergebene Parameter nen String ist .. dann wird erst noch query() aufgerufen wenn nicht dann wird gleich mysql_fetch_array aufgerufen. So spar ich mir halt bissi arbeit ... muss halt netmehr $db->fetch_array($db->query("...")); schreiben und so Kleinigkeit was aber des arbeiten schon etwas erleichtert und übersichtlicher macht.
Flor1an ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.03.2007, 16:18  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

hm.... klingt super... aber kompliziert für mich als klassenneuling.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 10.03.2007, 17:06  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

wie gesagt kannst du verschiedene datenbanken oder aber auch verschiedene authentifizierungsparameter verwenden (und so z.b. nur lesen connections oder dergl. herstellen, eben was datenbank user-management so hgergibt). das ganze kannst du dann noch auf einen parameter herunterbrechen, so verbindet ::connect ('INTERN') dann halt mit allen rechten, ::connect ('BASIC') nur zugriff auf eine bestimmte tabelle oder so.
benutzt du ein zentral verwaltetes singleton objekt kannst du aus unabhängigen modulen ohne übergabe des handlers auf das DB objekt zugreifen usw. usf.

nicht zu vernachlässigen ein eigens fehlermanagement, was es dann auch ermöglicht, bestimmte funktionen in einer methode zu vereinigen.
du kannst query results im cache zusammen mit der anfrage ablegen, ... es gibt schon einige sinnvolle gründe für eine klasse.
nikosch ist gerade online  
Alt 10.03.2007, 17:14  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

ok. SOWEIT bin ich nochlange nicht. also denke ich dass für mich die funktionen oder eine einfache db-verbindungsklasse reichen. bin ja noch nicht auf so hohem level und tu mich mit der oop sehr schwer.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 10.03.2007, 23:49  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Promaetheus,

Zitat:
ok. SOWEIT bin ich nochlange nicht. also denke ich dass für mich die funktionen oder eine einfache db-verbindungsklasse reichen.
Klein anfangen ist gut, denn so lernt man seine Komponenten verstehen. Nach und nach wirst du dann sehen, wo die Probleme sind, wirst selbst anfangen weiterzuentwickeln und dann sehen, dass es einige Dinge gibt, die du genauso machen würdest.


Zitat:
bin ja noch nicht auf so hohem level und tu mich mit der oop sehr schwer. :Wink:
OOP ist erst mal garnicht das Thema, viel mehr Wert sollte auf OOD (=Objektorientiertes Design) gelegt werden. Für dich reicht aber auch erst mal ein modulares Design. Wenn man sich vorher Gedanken macht, wie das auszusehen hat ist es hinterher garnicht so schwer in PHP-Code zu fassen.

Zum Design:
Hier finde ich den Ansatz von nikosch77 interessant, eine Abstraktions-Schicht einzuziehen, die nochmal entscheidet, was die darüber liegende Schicht darf uns was nicht. Ebenso kann es Sinn machen eine weitere abstrakte Treiberschicht einzuziehen, damit man mit unterschiedlichen Datenbanken arbeiten kann. Treibt man das auf die Spitze, so setzt man das Domain-Object-Pattern ein. Hierbei wird das Datenmodell der Datenbank völlig vom Datenmodell der Anwendung getrennt. Es findet immer dann Einsatz, wenn mehrere Projekte auf eine und derselben Datenbank und oft auf die gleichen Tabellen zugreifen. Ich habe sowas in meiner Diplomarbeit gemacht. Dort habe ich 1-n Projekte auf den selben Tabellen gehostet. Die Daten-Schicht bestand aus 2 Unterschichte:

- MySQLHandler
- DataMapper

Der MySQLHandler implementiert die MySQL-Spezifika und stellt abstrakte Methoden wie executeStatement() oder getLastID() zur Verfügung. Der Mapper generiert nun mit Hilfe von SQL99-kompatiblen Statements (könnten auch gegen eine Postgre-SQL gehen) Objekte, bzw. Objektbäume, die die Anwendung verstehen kann. Beispiel wäre eine "Veranstaltung", an deren Attribut "Dozenten" weitere Objekte vom Typ "Dozent" hängen. Somit kann es der Anwendung egal sein, welche Datenbank darunter für die Speicherung der Daten sorg, solange die Anwendung die für sie verständlichen Daten bekommt. Ob nun eine MySQL schneller oder langsamer als eine Prostgre-SQL ist kann man sich streiten, denn um Performance geht es bei solchen Konzepten (erst mal) nicht.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


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
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
Abfrage: Klasse bereits includiert? becks123 PHP-Fortgeschrittene 24 16.12.2005 18:21
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
klasse in klasse aufrufen, php table db class, datenbank klasse schicht php

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