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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 13.12.2010, 11:54  
Erfahrener Benutzer
 
Registriert seit: 22.03.2009
Beiträge: 109
PHP-Kenntnisse:
Fortgeschritten
tarian befindet sich auf einem aufstrebenden Ast
Standard Best Practice: Datenbankabfragen

Hallo,

wollte mal fragen wie ihr das so handhabt mit den Abfragen gegen die Datenbank. Derzeit nutze ich eine selbstgeschriebene Klasse die mir die Statements baut. Doch ich erreiche je komplexer die Abfragen werden immer öfter die Grenzen des machbaren der Klasse.

Wie macht ihr das b.z.w wie ist da die beste herangehensweise? Ich bin mittlerweile soweit das ich denke das es am sinnvollsten ist die Statements einfach so abzufeuern wie von PHP vorgesehen ohne weiteren Schnickschnack.
tarian ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.12.2010, 12:11  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Kannst mal etwas genauer spezifizieren was du meinst ?
Also was deine Klasse(n) machen/können [sollen] ?

Geht es dir darum dbms-unabhängiges sql ala z.b. sowas wie Javas Hibernate in Form von HQL hat oder in der PHP-Welt Doctrine DQL hat ?

PHP-Code:
$query = new MyQuery();
$query->select()->from('someTable')->leftJoin('anotherTable')->where('someTable.baa = ?''blub')->andWhere('anotherTable.foo = ?''bla')->orderBy('foo DESC')->limit(30);
$result $query->execute(); 
Also was sind deine Ziele ?

Datenbankunabhängigkeit ?
Mächtigere Query-Builder-Klasse ?
Speziellere Features ?
robo47 ist offline   Mit Zitat antworten
Alt 13.12.2010, 12:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Deine Datenbankklasse sollte immer das Abfeuern von manuell gebauten Queries unterstützen, dann kannst du an gar keine Grenzen stossen. Zusätzlich kannst du ja Methoden anbieten, die dir übliche Queries schneller und bequemer zusammenbaut. So wie von robo47 vorgeschlagen in etwa, nur dass ich den Query-Builder von der Datenbankklasse entkoppeln würde, wie etwa bei Zend_Db (Adapter) und Zend_Db_Select (SELECT-Builder). Wenn dein SELECT-Builder jetzt auch noch eine __toString()-Methode implementiert, muss die DB-Klasse nicht mal den SELECT-Builder kennen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 13.12.2010, 12:57  
Erfahrener Benutzer
 
Registriert seit: 22.03.2009
Beiträge: 109
PHP-Kenntnisse:
Fortgeschritten
tarian befindet sich auf einem aufstrebenden Ast
Standard

Ich wollte eigentlich nur mal hören wie es die eingefleischten PHP Developer handhaben. Ich komme ja eigentlich aus der .Net Welt.

Ich habe mir zwar eine Klasse geschrieben die mein Arbeiten zuvor auch beschleunigt und erleichtert hat. Doch mittlerweile sehe ich keinen effektiven nutzen mehr darin da die Statements deutlich komplexer werden und die Klasse da nicht mehr mithalten kann.
tarian ist offline   Mit Zitat antworten
Alt 13.12.2010, 13:37  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich nehme PDO weil ich zu faul bin, das Rad neu zu erfinden.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 13.12.2010, 14:56  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von tarian Beitrag anzeigen
Ich wollte eigentlich nur mal hören wie es die eingefleischten PHP Developer handhaben.
Primär wohl erstmal schauen welche Räder es schon gibt und ob die Räder an den eigenen Wagen passen.


Jenachdem was man will und braucht gibt es ja schon diverse Systeme, fast jedes Framework bringt im Datenbank-Bereich nen Abstraktions-Layer oder sogar ORM-System mit das auf PDO/mysql(i)/etc aufbaut.

Zend_Db
APF Generic OR Mapper

Dazu kommen dann reine ORM-Systeme wie Doctrine1 und Propel und mittlerweile Doctrine2 das eine komplette Auftrennung in Komponenten hat, sprich einerseits DBAL (DataBase Abstraction-Layer), andererseits ORM (Object Relational Mapping). Doctrine1/2 bietet daneben auch noch Migrationen von DB-Schemata an.

Weitere DBLA oder ORM-Systeme:

Adodb
PEAR_Mdb2
Creole
robo47 ist offline   Mit Zitat antworten
Alt 13.12.2010, 15:24  
Jens P.
Gast
 
Beiträge: n/a
Standard

Schau dir doch mal den GenericORMapper von dem APF-Framework an. Ich kann dir nur empfehlen: erfinde das Rad nicht neu, sondern nutze das APF! Mit dem GenericORMapper kannst du ganz leicht Datenbanken abfragen.
  Mit Zitat antworten
Alt 13.12.2010, 17:57  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Ich funke nur ungern dazwischen, aber ich persönlich sehe nach wie vor keinen Vorteil darin, sich die Abfrage mittels einer Klasse zusammenzubauen. Schreibarbeit hat man mehr oder weniger diesselbe, einen echten Mehrwert sehe ich jedoch nicht. Gerade mit PDO gestalten sich Datenbankabfragen sehr leicht und übersichtlich.
Trainmaster ist offline   Mit Zitat antworten
Alt 14.12.2010, 07:48  
Erfahrener Benutzer
 
Registriert seit: 22.03.2009
Beiträge: 109
PHP-Kenntnisse:
Fortgeschritten
tarian befindet sich auf einem aufstrebenden Ast
Standard

Ja habe ein ähnliches Gefühl wie Trainmaster. Deswegen auch dieser Thread
tarian ist offline   Mit Zitat antworten
Alt 14.12.2010, 08:04  
Erfahrener Benutzer
 
Registriert seit: 25.09.2009
Beiträge: 2.115
PHP-Kenntnisse:
Fortgeschritten
BlackScorp wird schon bald berühmt werdenBlackScorp wird schon bald berühmt werden
Standard

meiner meinung nach , liegt der vorteil in solchen klassen, die verwendung. es sind halt ein paar zeilen weniger zu tippen zb:

PHP-Code:
$sql mysq_query("SELECT * FROM users");
while(
$row mysql_fetch_object($sql)){

echo 
$row->username;

oder
PHP-Code:
while($row Users->fetchAll()){
echo 
$row->username;

nachteil besteht darin, dass nicht wirklich nötige funktionen/methoden/klassen aufgerufen werden und somit ein wenig overhead erzeugen, bei manchen anwendungen spielt es keine rolle, bei anderen aber schon.(bezogen auf ausführungsgeschwindigkeit)

ich persönlich benutze die einfach variante von PDO ohne einen ORM , dieses erweitere ich ein wenig damit ich nicht immer per hand escapen muss, das ist das einzige was meine klasse tut.

Man muss ja nicht jedem trend folgen dem endbenutzer ist es ja eh im grunde schnuppe, hauptsache er hat auf der seite die funktionen die er benötigt

MFG
__________________
Mein kleines Projekt
-Cruel Online-
5 von 3 Leuten können kein Bruchrechnen
BlackScorp 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 Sprachvar. in JS cycap Software-Design 18 25.11.2010 18:38
[Erledigt] Best Practice DB Verbindung makebzimage Software-Design 31 04.11.2010 14:04
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
Best Practise: Arrays unabhängig vom index zusammenfügen lh_as PHP-Fortgeschrittene 1 16.03.2010 15:47
Best Practise: Anlegen, Editieren und Verwaltung von Kunden RassyBaby PHP-Fortgeschrittene 8 14.05.2009 23:28
10000: Yet Another „The n Best X'es“ Nikolaus 2.0 Adventskalender 2008 20 17.12.2008 13:35
best bewerteten Bilder auswählen Maho88 Datenbanken 19 01.08.2006 18:51
[Erledigt] Button an best Tagen zu best. Uhrzeiten wechseln lassen PHP Tipps 2005-2 3 30.07.2005 12:52
The best h4x0r in the world!!!!! Freeaak Off-Topic Diskussionen 2 29.07.2005 18:54
Fehlerhafte anzeige mit best. Browsern Flor1an HTML, Usability und Barrierefreiheit 6 10.11.2004 19:28
html-Datei ab best. Stelle auslesen PHP Tipps 2004 3 17.08.2004 17:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php datenbank best practice, datenbankabfragen mit symfony doctrine, datenbank abfragen, \design \, symfony datenbankabfrage, php pdo select andwhere, datenbank abfrage klasse, best practice datenbankfunktionen php, php best practices, apf framework datenbankabfrage, datenbankabfrage php limit mit pdo, adodb datenbankabfrage php, was sind datenbankabfragen, datenbank anfragen, select query best practices, php pdo abfragen schneller machen, php datenbanken best practice, datenbank best practice, doctrine komplexe anfrage dql, bester design datenbank

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