Bedømmelse af database class

Tags:    php

<< < 12 > >>
Hej udviklere,
Jeg har i lang tid været væk fra programmering og udvikling, men fik i dag lyst til at starte igen :)
Jeg er begyndt på en såkaldt "toolbox", en class hvor jeg vil have en masse nyttige funktioner til brug i fremtidige projekter.
Jeg vil gerne vide om der er noget jeg kan optimere og gøre bedre/hurtigere.

Fold kodeboks ind/udPHP kode 


Min toolbox class:
Fold kodeboks ind/udPHP kode 


Jeg ville også gerne vide om der var noget i synes jeg skulle tilføje til min "toolbox"



14 svar postet i denne tråd vises herunder
7 indlæg har modtaget i alt 31 karma
Sorter efter stemmer Sorter efter dato
Jeg har lige en bemærkning, tænkte at det måske var en god ide at holde din database klasse som et enkelt objekt altid. Du kan evt. overveje om denne skal have et singleton design pattern inkluderet.

Singleton
Fold kodeboks ind/udPHP kode 

Du kan så oprette et objekt af din database klasse i din toolbox sådan her
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 15.12.2011 11:21 af Bruger #4487
Umiddelbart synes jeg ikke at det giver mening at din DB klasse nedarver fra toolbox klassen, mest fordi at DB klassen ikke rigtigt får noget brugbart fra toolbox klassen :)

Mvh.

Kasper (TSW)



Fejl vil jeg tro:
- Objekt variablen $result aldrig bliver brugt til noget.
- Den get returnerer false ved 0 rækker, det synes jeg er en dårlig ide, det er jo ikke en fejl at få et tomt resultat.
- Din whereOr er forkert, du skal sætte parenteser, det du har er:
(A AND B) OR C ikke A AND (B OR C)
- $table i update, delete, insert, get bliver ikke saniteret og det gør inputtet i where og whereOR heller ikke.

Kommentarer
- Jeg ville have skrevet return $x inde i if sætningen i get.
- At have exit i klassen mener jeg ikke er en god ide. Det tildeler jo i grunden klassen retten til at bestemme over mere end den behøver.
- Dine return ligner nogle steder funktions kald return($value)
- Hvordan du sammensætter strenge er ikke ensartet. Du bruger bl.a:
- "Bla $variabel"
- "Bla {$variabel}"
- 'Bla '.$variabel
ville holde mig til en måde. Personligt foretrækker jeg den sidste.






Har lige nogle rettelser til din kode også. Det er generelt en dårlig ide at sammenligne strenge på samme måde, som med tal o.lign.

Dårlig Kode!!!
Fold kodeboks ind/udPHP kode 

Du skal hellere benytte enten funktionen strcasecmp( string $str1, string $str2 ) eller strcmp( string $str1, string $str2 ). Metoderne returnerer værdien 0 (nul), hvis de er ens, og positiv/negativ (kommer an på streng nummer 2's længde) hvis de ikke er ens. Du kan tjekke således.

God Kode!!!
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 18.12.2011 22:22 af Bruger #4487
Aaarh Martin... det er da vist en (jule)and... :)

Performance mæssigt er det da vist en dårlig idé at bruge en funktion til at sammenligne to strenge, hvis man blot skal vide om de er ens eller ej.

Medgi'r at det tosset kun sammenligne med "==", men at man skal bruge "===".

http://snipplr.com/view/758/ og
http://stackoverflow.com/questions/3333353/php-string-comparison-vs-strcmp



Indlæg senest redigeret d. 18.12.2011 22:33 af Bruger #10216
Du kalder din argumenter for $row i order, where og whereOr, men er det ikke snarrer $field/$column?



skal metoder ikke deklareres på følgende måde: minMetode i stedet for min_metode ? eller er det kun i java at det er standard?


PHP er elsket og hadet for at have absolut 0 standarder for, hvordan funktioner/metoder/variabler/katte skal navngives. Det giver god fleksibilitet så man i det enkelte projekt kan angive hvilke konventioner man vil følge. Det giver dårlig konsistens i PHPs egen kodebase når du aldrig ved om der er bindestreg eller ej. String-funktionerne er specielt notoriøse for at misbruge manglen på navngivningskonventioner (fx str_replace vs. strtr -- du ved aldrig om en string-funktion hedder str_ eller str som præfix).

PHPs egne indbyggede objekt-metoder har dog konventionen, at de bruger camelCase -- dvs fx PDO og andre indbyggede PHP-moduler der er objektorientede, bruger camelCase til deres metoder. Men det er ikke tvunget at du skal gøre det i dine egne klasser :) Personligt foretrækker jeg underscore.



Mange tak for dit svar. Har aldrig selv arbejdet med singleton pattern, men det lyder rigtig spændende.
Jeg vil læse lidt på lektien, og derefter ændre min kode.

Tak igen for svaret!



Det er fordi at toolbox klassen er det sted hvor alle mine indstillinger skal være, som f.eks mysql informationer osv. Jeg synes at det er nemmest hvis jeg kun skal ind og ændre i en fil, i stedet for at kigge en masse filer i gennem for at ændre en information



Indlæg senest redigeret d. 15.12.2011 21:43 af Bruger #14700
Man siger dog at klasser bygges for at de skal indeholde data og udfører opgaver som de er lavet til. Derfor er jeg enig med kasper i at det virker lidt ulogisk at nedarve fra toolbox klassen, fordi den indeholder database oplysningerne. Det ville da være mere 'logisk' at din database klasse indeholdt database oplysninger frem for din toolbox.



<< < 12 > >>
t