PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

07-09-2007, 20:10
|
Bugbuster
PHP Junior
|
|
Registriert seit: Mar 2003
Ort: Hamm
Beiträge: 658
|
|
Zitat:
mir erscheint es einfach nich logisch, dass eine datenbank auf eine datenbank connected...
|
Die Klassen Datenbank ermöglicht dir zu unterschiedlichen, in diesem Fall MySQL-Datenbanken, zu connecten. Somit ist eine Klasse portabel und ersparrt dir im Endeffekt viel Zeit. Wenn dir deine KLassennamen nicht logisch erscheinen dann bennenne sie doch einfach, in einem für dich logischen Namen, um.
Zitat:
anstatt database würde ich ehersowas wie ein dataset modellieren, welches man mittels eines adapters füllen kann
|
LOL?!?!
|

07-09-2007, 20:25
|
BugBite
Member
|
|
Registriert seit: May 2006
Beiträge: 299
|
|
na tut mir leid, aber wenn das die funktion der klasse darstellen soll,
dann kann man die doch nich database nennen...
ich will ja nich kleinkariert erscheinen, aber wenn man klassen
erstellt und benennt, dann sollten die doch irgendwie bezug zur
funktion bzw realität haben...
unfassbar aber in manchen framework macht mans so (in der art )
d.h. mit einem adapter auf die db connecten...
Geändert von BugBite (07-09-2007 um 20:27 Uhr)
|

07-09-2007, 22:16
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
Bei der Abstraktion geht es doch darum, dass der Controller nicht für die Datenbank zuständig ist, dass heißt die Tabellen werden zum Beispiel in Klassen abgebildet und dann verknüpft - die Querys werden dann automatisch gebildet werden (die Logik kann auch in anderen DBMS benutzt werden).
|

08-09-2007, 00:48
|
hiro
Newbie
|
|
Registriert seit: Aug 2007
Beiträge: 27
|
|
Hallo,
danke euch für die tollen Antworten 
Ich müsste wissen das ist das erstemal das ich sowas schreibe und OOP war mir bis jetzt ein fremdbegriff.
Ich hab am Dienstag angefangen mich in OOP einzulesen, davor hatte ich wenig bis garkeine PHP-Kentnisse.
Also entschuldigt mich wenn ich was fehlerhaft bzw. nicht Ordnungsgemäß gemacht habe.
Zitat:
Vielleicht solltest du auch erstmal ein UML Anlegen
|
Was ist ein UML?
Zitat:
Viel interessanter
fänd ich jetz ne ordentliche Klasse zur Datenabstraktion
|
Was meinst du genau damit?
Denkt ihr mein Ansatz ist falsch? Oder hab ich alles Falsch gemacht?
Aber seitdem ich das geschrieben habe kann ich einfach viel mehr als wie vorher.
Hmm über weitere Tips würde ich mich freuen, werd heut Nacht die Klasse neu schreiben und es wieder posten.
|

08-09-2007, 01:06
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Original geschrieben von hiro
Was ist ein UML?
|
Google/Wikipedia
Zitat:
Was meinst du genau damit?
|
Hast du nach Lesen des einen Postings aufgehört und die 10 anderen gar nicht erst angeschaut? Ansonsten wäre die Frage jetzt entweder unnötig, oder konkreter...
|

08-09-2007, 01:17
|
hiro
Newbie
|
|
Registriert seit: Aug 2007
Beiträge: 27
|
|
Zitat:
Original geschrieben von ghostgambler
Google/Wikipedia
Hast du nach Lesen des einen Postings aufgehört und die 10 anderen gar nicht erst angeschaut? Ansonsten wäre die Frage jetzt entweder unnötig, oder konkreter...
|
Hallo,
Wikipedia hab ich schon gefragt aber da is die Erklärung nicht immer für jeden Verständlich.
Wenn du den Beitrag von tontechnicker meinst
Zitat:
Bei der Abstraktion geht es doch darum, dass der Controller nicht für die Datenbank zuständig ist, dass heißt die Tabellen werden zum Beispiel in Klassen abgebildet und dann verknüpft - die Querys werden dann automatisch gebildet werden (die Logik kann auch in anderen DBMS benutzt werden).
|
Hab ich auf ne bessere Erklärung gehofft
Ps.: Tut leid wenn ich nicht gleich alles verstehe, liegt vll. daran das Deutsch nicht meine Muttersprache ist. (Lebe seit 3 Jahren in ÖE)
|

08-09-2007, 02:21
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Original geschrieben von hiro
Wikipedia hab ich schon gefragt aber da is die Erklärung nicht immer für jeden Verständlich.
|
Also den ersten Absatz sollte man eigentlich verstehen... und wenn es dir in Deutsch zu schwer ist (ich gebe zu, es sind viele Fremdworte drin), linke Leiste, ganz unten, da finden sich gaaaanz viele weitere Sprachen, in welcher der Artikel ähnlich auch vorhanden ist - irgendwo wird deine doch bei sein? Und da sollten dann auch Fremdworte nicht mehr hinderlich sein...
Zitat:
Wenn du den Beitrag von tontechnicker meinst
|
Nein, ich meinte die Diskussion allgemein~
|

08-09-2007, 03:02
|
BugBite
Member
|
|
Registriert seit: May 2006
Beiträge: 299
|
|
ohne UML brauchste imho mit OOP oder OOM allgemein erst garnich anfangen
|

08-09-2007, 12:45
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
@Hiro: Dir fehlt Grundlagenwissen. Lies mal ein gutes Buch über OOP im Allgemeinen und vielleicht noch eines über OOP mit PHP.
Zitat:
Original geschrieben von BugBite
ohne UML brauchste imho mit OOP oder OOM allgemein erst garnich anfangen
|
Diese Aussage ist völlig unangebracht!
Vielleicht befasst du dich ausschließlich mit sehr großen Projekten, die ohne UML nicht zu überschauen wären.
Aber es ist nicht sinnvoll, ein UML-Diagramm für eine einzige Klasse zu zeichnen.
|

08-09-2007, 14:11
|
BugBite
Member
|
|
Registriert seit: May 2006
Beiträge: 299
|
|
aber wenn du sie einmal in UML gezeichnit hast brauchst du sie beim nächsten projekt nur mit drag and drop reinwerfen :]
|

08-09-2007, 14:37
|
Alrik
Member
|
|
Registriert seit: Jan 2006
Beiträge: 304
|
|
Re: MySQL-Klasse kritisieren
Zitat:
Original geschrieben von hiro
PHP-Code:
<?
if($autoSelect === true) {
if (is_resource ($this -> linkID)) {
if($this->linkID === false) {
if (@mysql_select_db($this->database, $this->linkID) === false)
?>
|
Hi,
Um mal von der Kritik an der Klasse wegzukommen (ich hätte eher ein Interface geschrieben für Datenbanken und meine DB Klassen würden das Interface implementieren, da du eh jede Methode überscheiben müsstest, wenn du vererbst.
Bei deinen If Abfragen machst du einen typischen "Anfängerfehler". Du fragst z.B. im ersten "if", ob autoselect gleich "true" ist, und wenn das Ergebnis daraus "true" ist, dann soll der was machen. Warum nicht gleich das Ganze so schreiben:
PHP-Code:
if ($autoselect)
// ...
if (!$this->linkID)
// ...
Einmal hast du es sogar bereits so getan:
PHP-Code:
if (is_resource ($this -> linkID))
Hier hast du ja auch nicht auf "true" explizit geprüft.
Gruß Thomas
|

08-09-2007, 14:41
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Re: Re: MySQL-Klasse kritisieren
Zitat:
Original geschrieben von Alrik
Bei deinen If Abfragen machst du einen typischen "Anfängerfehler". Du fragst z.B. im ersten "if", ob autoselect gleich "true" ist, und wenn das Ergebnis daraus "true" ist, dann soll der was machen. Warum nicht gleich das Ganze so schreiben:
|
Weil es genau genommen einfach falsch ist.
In dem Fall muss PHP erst eine implizite Typenkonvertierung durchführen, die es sich bei === sparen kann, das ist nicht nur sauberer, sondern auch schneller.
Natürlich achtet da bei PHP kein Mensch drauf, aber die Variante mit dem dreifachen Gleichheitszeichen ist, in der Informatik-Theorie her, mit Sicherheit die bessere.
|

08-09-2007, 14:53
|
Griecherus
PHP Senior
|
|
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
|
|
Re: Re: MySQL-Klasse kritisieren
Zitat:
Original geschrieben von Alrik
Bei deinen If Abfragen machst du einen typischen "Anfängerfehler". Du fragst z.B. im ersten "if", ob autoselect gleich "true" ist, und wenn das Ergebnis daraus "true" ist, dann soll der was machen. Warum nicht gleich das Ganze so schreiben:
PHP-Code:
if ($autoselect)
// ...
if (!$this->linkID)
// ...
|
Das sehe ich nicht so. Ich würde sogar so weit gehen, das unsauber zu nennen - mal abgesehen davon, dass PHP erstmal den Typ des zu untersuchenden Parameters konvertieren muss, was in die Performance eingreift.
PHP-Code:
if ($bool)
{
// ...
}
Dank PHPs schwacher Typisierung kann $bool 1, 'true', TRUE usw. sein. Und wenn man nun einen bestimmten Wert von einem Parameter erwartet, wieso sollte man ihn dann nicht explizit auf diesen überprüfen?
|

08-09-2007, 15:31
|
Alrik
Member
|
|
Registriert seit: Jan 2006
Beiträge: 304
|
|
Re: Re: Re: MySQL-Klasse kritisieren
Zitat:
Original geschrieben von ghostgambler
Weil es genau genommen einfach falsch ist.
In dem Fall muss PHP erst eine implizite Typenkonvertierung durchführen, die es sich bei === sparen kann, das ist nicht nur sauberer, sondern auch schneller.
Natürlich achtet da bei PHP kein Mensch drauf, aber die Variante mit dem dreifachen Gleichheitszeichen ist, in der Informatik-Theorie her, mit Sicherheit die bessere.
|
Wieso sollte PHP konvertieren müssen, wenn beides schon boolsche Werte sind?
|

08-09-2007, 15:48
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
Du sagst es: wenn....
bei Arrays kann man ja mittlererweile den Typ im Methodenkopf vorgeben, bei boolean ists aber glaube ich NOCH nicht so.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|