php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-06-2011, 10:58
lalaland
 Registrierter Benutzer
Links : Onlinestatus : lalaland ist offline
Registriert seit: Apr 2011
Beiträge: 64
lalaland zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Sql query auslagern?

Hi,
ich schreibe grade eine DbManager class in dieser werden die Datenbankabfragen getätigt. Meine Frage ist würdet ihr die query´s in eine extra class auslagern? Zum Beispiel class Sqlquerys und diese dann einfache per get Funktion in die Managerclass holen. Oder sind die dort aufgehoben? Die frage kam auf Grund der Übersichtlichkeit auf. Der zweite Punkt wäre bremst das Auslagern die Abfragen extrem aus oder ist es zu vernachlässigen?
Mfg Lalaland
Mit Zitat antworten
  #2 (permalink)  
Alt 06-06-2011, 11:05
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum tätigt die DbManager Klasse irgendwelche Datenbankabfragen?
Mit Zitat antworten
  #3 (permalink)  
Alt 06-06-2011, 11:14
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

den Namen nach tendierst du zu einer oft beobachteten Arbeitsweise, bei der Klassen nach deren Aufgabe eingeteilt werden. Das führt praktisch dazu, dass du im Grunde prozedural arbeitest und die Klasse nur noch einen Namespace für die Funktionen darstellt. Solche Dinge wie ...Manager sind meistens schon ein Hinweis darauf, dass der Entwurf nicht stimmt.

Besser: Klassen nach dem einteilen was sie sind und repräsentieren. Z. B. Database, Table, Row, ResultSet, ClientModel, Client u. s. w.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #4 (permalink)  
Alt 06-06-2011, 11:27
lalaland
 Registrierter Benutzer
Links : Onlinestatus : lalaland ist offline
Registriert seit: Apr 2011
Beiträge: 64
lalaland zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Na ja evlt ist meine Klassenbeschreibung auch falsch. Ich will einfach eine Klasseerstellen in der alle Einträge in die Datenbank gemacht und alle ausgaben abgefragt werden können. Evtl kann man das ja noch mal in eine SetDB und eine GetDb Klasse oder so unterteilen. Über diese Klasse(n) sollen die Daten dann an das Ausgebe Template weiter gegeben werden.
Mfg Lalaland
Mit Zitat antworten
  #5 (permalink)  
Alt 06-06-2011, 11:36
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Und warum ist das _eine_ Klasse? Hast du nur eine Tabelle in der Datenbank? Pro Tabelle sollte zumindest eine Klasse existieren. Sinnvollerweise sind es mindestens zwei (eine Klasse, die für die Datenbankabfragen zuständig ist und eine Klasse, die die Daten enthält). Und anhand der Klassennamen sollte auch erkennbar sein, um was es sich eigentlich handelt.

Geändert von h3ll (06-06-2011 um 11:38 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 06-06-2011, 11:37
lalaland
 Registrierter Benutzer
Links : Onlinestatus : lalaland ist offline
Registriert seit: Apr 2011
Beiträge: 64
lalaland zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hm.. ich dachte das ich pro Tabelle eine Funktion mache.
Mit Zitat antworten
  #7 (permalink)  
Alt 06-06-2011, 11:41
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Das hat dann aber nichts mehr mit OOP zu tun. Da kannst du gleich prozedural programmieren.
Mit Zitat antworten
  #8 (permalink)  
Alt 06-06-2011, 11:46
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Das klingt nicht sinnvoll. Am besten du erstellst erst einmal eine Klasse für jede Art von Ding in deiner Datenbank, z. B. Address, User, Product, Order, ... und baust die zugehörigen Getter und Setter ein, z. B. Address->getStreet/setStreet(), User->getAddress().

Dann baust du Model-Klassen für logisch zusammengehörige Bereiche, z. B. UserModel mit Methoden wie getUsersByLastName(), getUsersByCity(), createUser(), insertUser(), updateUser(), ... und OrderModel mit getProductGroup(), getProductByEAN(), getOrdersByUsername(), getUnshippedOrders().
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (06-06-2011 um 11:49 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 06-06-2011, 11:55
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Dann baust du Model-Klassen für logisch zusammengehörige Bereiche, z. B. UserModel mit Methoden wie getUsersByLastName(), getUsersByCity(), createUser(), insertUser(), updateUser(), ... und OrderModel mit getProductGroup(), getProductByEAN(), getOrdersByUsername(), getUnshippedOrders().
Das hat aber nichts im Model verloren, das gehört ins Repository. Im Model werden nur die Daten und die Relationen abgebildet.

Geändert von h3ll (06-06-2011 um 11:59 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 06-06-2011, 11:59
lalaland
 Registrierter Benutzer
Links : Onlinestatus : lalaland ist offline
Registriert seit: Apr 2011
Beiträge: 64
lalaland zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hm... Das werde dann aber viele Klassen oO. Na ja aber stimmt schon dann lassen sich die Abfragen für die einzelnen Tabellen leichter erweitern, wenn noch abfragen dazu kommen.
Mit Zitat antworten
  #11 (permalink)  
Alt 06-06-2011, 12:00
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lalaland Beitrag anzeigen
Hm... Das werde dann aber viele Klassen oO. Na ja aber stimmt schon dann lassen sich die Abfragen für die einzelnen Tabellen leichter erweitern, wenn noch abfragen dazu kommen.
Es war auch nie das Ziel möglichst viel Code in möglichst wenig Klassen zu stopfen.
Mit Zitat antworten
  #12 (permalink)  
Alt 06-06-2011, 12:03
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hm, da PHP-Anwendungen meist sehr kurzlebig sind, habe ich bisher keinen Nutzen darin gesehen, das Repository Pattern zu benutzen, aber danke für den Denkanstoß.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #13 (permalink)  
Alt 06-06-2011, 12:08
lalaland
 Registrierter Benutzer
Links : Onlinestatus : lalaland ist offline
Registriert seit: Apr 2011
Beiträge: 64
lalaland zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Das klingt nicht sinnvoll. Am besten du erstellst erst einmal eine Klasse für jede Art von Ding in deiner Datenbank, z. B. Address, User, Product, Order, ... und baust die zugehörigen Getter und Setter ein, z. B. Address->getStreet/setStreet(), User->getAddress()
Also erst mal Kontainerkassen erstellen sehe ich das richtig. In diese werden die Daten eingespeißt und diese geben sie auch wieder zurück. Alles klar.
Mit Zitat antworten
  #14 (permalink)  
Alt 06-06-2011, 12:09
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Hm, da PHP-Anwendungen meist sehr kurzlebig sind, habe ich bisher keinen Nutzen darin gesehen, das Repository Pattern zu benutzen, aber danke für den Denkanstoß.
Wenn du es so siehst, kann ja gleich auf jeden sauberen Ansatz verzichten, weil es eh nur kurzlebig ist

Ich arbeite an Anwendungen mit einer Entwicklungszeit von mindestens einem Jahr. Wäre ziemlich schade, wenn man diese Arbeit nach 2, 3 Jahren wieder wegwirft und von vorne beginnt.

Mal davon abgesehen ist ja der große Vorteil von OOP die Wiederverwendbarkeit. Wenn du damit nur kurzlebige Anwendungen programmierst und danach alles wegwirfst, verzichtest du auf diesen Vorteil.
Mit Zitat antworten
  #15 (permalink)  
Alt 06-06-2011, 12:13
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Genau, worauf du dabei aber unbedingt verzichten solltest, ist jegliche Anbindung dieser Klassen an die Datenbank. Diese Klassen sollten relativ dumm sein und nichts anderes können, als die Daten, die ihnen eingehämmert wurden, wiederzugeben. Auf keinen Fall dürfen Sie sich diese Daten selbst besorgen oder Änderungen in die Datenbank zurückschreiben können.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Auslagern von IP Adresse andru SQL / Datenbanken 2 22-04-2007 16:13
Datenbank auslagern phpmax SQL / Datenbanken 2 05-12-2006 18:00
[PHP] CMS - Texte auslagern flolle BRAINSTORMING PHP/SQL/HTML/JS/CSS 1 26-03-2004 12:51
code auslagern? Enzio PHP Developer Forum 1 04-01-2004 20:48
Funktionen auslagern? Innuendo PHP Developer Forum 10 17-06-2003 15:26

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:00 Uhr.