AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Klassenstruktur für Adressdatenbank
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Klassenstruktur für Adressdatenbank

Offene Frage von "Luckie"
Ein Thema von Luckie · begonnen am 3. Feb 2012 · letzter Beitrag vom 24. Mär 2012
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[PHP] Klassenstruktur für Adressdatenbank

  Alt 3. Feb 2012, 22:11
Hallo,
ich habe ein private MySQL Adressdatenbank auf meinem Server. Bisher ist der PHP-Code ziemlich unstrukturiert und prozedural. Das wollte ich jetzt ändern und das ganze objektorientiert neu Programmieren. Ich finde aber noch keine mir zusagende Klassenstruktur.

Was ich bisher habe:
- eine Klasse für einen einzelnen Kontakt
- eine Containerklasse für mehrere Kontakte, die eventuell von einem Query zurückgegeben werden (Wird eventuell durch ein einfaches Array ersetzt)
- ....

Ja und jetzt weiß ich nicht so ganz weiter. Ich bräuchte noch Klassen für verschiedene Views: Einzelansicht, mehrere Datensätze (mit der Möglichkeit seitenweise zu blättern), eine Klasse für das Anlegen und Löschen eines neuen Kontaktes, ...

Und ich überlege, ob ich der Klasse für einen einzelnen Kontakt Methoden spendiere zum Speichern und Ändern oder ob ich das in die Klasse zum Anlegen und Löschen eines Kontaktes packe.

Gibt es für das Problem eine Standardlösung? Ich will aber keine fertigen Frameworks. Es ist für mich auch eien Fingerübung zum Lernen von PHP.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

AW: [PHP] Klassenstruktur für Adressdatenbank

  Alt 4. Feb 2012, 00:06
Grundsätzlich solltest du ein Framework verwenden.
Mit PHP kann man unheimlich leicht Webseiten programmieren, welche viele Sicherheitslücken enthalten.
Ein Framework hilft etwas, dass zu vermeiden.

Die gängigen sind Zend_Framework oder etwas mehr high level das Flow3.
Flow3 ist derzeit das modernste was es gibt.
Die Leute haben sich viele Gedanken gemacht. Ziel war es "secure by default" zu sein.

Wenn du "nur" eine kleine Verwaltung willst, könntest du auch zum CMS PimCore greifen.

Wenn du es doch per Hand machen willst, dann verwenden zumindest eine Template-Engine z.B. Smarty und einen fertigen DB-Layer.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#3

AW: [PHP] Klassenstruktur für Adressdatenbank

  Alt 4. Feb 2012, 00:18
Eine Klasse zum Anlegen und Löschen von Kontakten? Ne!

Eigentlich suchst du einen ORM, wie CakePHP. Das ist ziemlich genau das was du brauchst. Wenn du dich mit der API solcher ORM mal auseinander setzen würdest, dann wäre dir sicher auch viel klarer, wie die Klassen zu strukturieren sind.

Ich finde eigentlich, dass du hier viel zu viele unnötige Klassen benutzt. Bei mir gäbe es eine einzige Klasse Kontakt. Diese macht alles was man braucht. Sie besitzt statische Methoden zum Anlegen eines neuen Kontakts (die dann den Kontakt zurückgeben), Methoden zum löschen und weitere statische Methoden zum Filtern. Contact::get() liefert alle Kontakte, Contact::findByPhone(...) alle mit bestimmter Nummer. In richtigen ORM wird ein Select erst ausgeführt, wenn man die Daten tatsächlich braucht. Damit benutzt man dann Konstrukte wie:

Code:
$myList = Contact::byCountry('de')->limit(0, 20);
Natürlich kann man hier viel mehr Klassen erstellen, das macht man auch insbesondere dann, wenn weitere solche Tabellen gebraucht werden. Der Contact sollte von (abstract) Table erben, die die wichtigsten Operationen wie get, insert, delete usw. bereitstellt. Die Contact-Klasse selbst definiert dann lediglich ihr Layout im Konstruktor ($this->add_column) und bietet weiterführende Methoden an. So benutze ich es jedenfalls seit Jahren.

Das ganze Framework dafür kann sehr sehr viel Arbeit kosten. Ich habe sowas allerdings auch schon mal selbst erstellt und es hat riesen Spaß gemacht. Dennoch ist man mit einem Framework, auch wenn ich mir bei dem Begriff in dem Fall nicht sicher bin, besser beraten. Gerade weil man dadurch mehr lernt als durch falsches Probieren. Überlege dir, ob CakePHP dir zusagt. Es reicht ja, wenn du den ORM daraus verwendest. Das Zend Framework ist auch genial, aber sehr umfangreich. Auch hier musst du nicht alles verwenden.

Du gehst den richtigen Weg und lernen wie es geht ist definitiv wichtig. Aber es ist schlauer sich anzuschauen wie andere Frameworks funktionieren, oder zumindest welche API sie anbieten. Sich das abzuschauen ist nicht verboten und bei Bedarf dann doch selbst zu machen, wenn man will, bringt mehr Vorteile. Schau doch wenigstens ein paar Tutorials zu ORM in PHP, damit kann man schon einen Überblick bekommen wie es dort aufgebaut ist.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: [PHP] Klassenstruktur für Adressdatenbank

  Alt 4. Feb 2012, 03:13
@generic: Wie ich schon sagte, ich will lernen. Und wenn ich nur fertige Framesworks verwende, bringt mir das nichts. Ich will Fehler machen, denn aus Fehlern lernt man. Und es ist auch nicht sinerheitsrelevant, weil es für mich ist und da eh kein anderer mit arbeitet. Und Mit CakePHPO habe ich schon sehr intensiv gearbeitet.

@Valle: Die Idee mit der einen Klasse hat was. Ich denke, das werde ich weiter verfolgen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#5

AW: [PHP] Klassenstruktur für Adressdatenbank

  Alt 4. Feb 2012, 10:19
@generic: Wie ich schon sagte, ich will lernen. Und wenn ich nur fertige Framesworks verwende, bringt mir das nichts. Ich will Fehler machen, denn aus Fehlern lernt man. Und es ist auch nicht sinerheitsrelevant, weil es für mich ist und da eh kein anderer mit arbeitet. Und Mit CakePHPO habe ich schon sehr intensiv gearbeitet.

@Valle: Die Idee mit der einen Klasse hat was. Ich denke, das werde ich weiter verfolgen.
Dann bau Dir Dein eigenes Framework. Vor zwei Jahren stand ich auch vor diesem Problem, hatte keine Ahnung von PHP, und hab nach langen Recherchen mein eigenes Framework gebastelt. Nebenbei habe ich damit MVC erstmal begriffen.
Ausgegangen bin ich u.a. an-mvc-framework-in-799-bytes/ hiervon, und habe mithilfe von diversen Tutorials mein eigenes gebaut.
Wenn Du die Möglichkeit hast, solltest Du Dir auch mal MongoDB ansehen, ideal für Adressen usw.
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#6

AW: [PHP] Klassenstruktur für Adressdatenbank

  Alt 5. Feb 2012, 16:58
Doctrine als orm hat sich im PHP Bereich ziemlich verbreitet:
http://www.doctrine-project.org/
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: [PHP] Klassenstruktur für Adressdatenbank

  Alt 6. Feb 2012, 00:31
Klingt gut. auch wenn ich es selber bastele, werde ich mir das angucken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz