login  Naam:   Wachtwoord: 
Registreer je!
 Showcase:

ShowcaseOverige >  DB class

Gegevens:
Gepost door:
kokx
URL:
http://pieter.kokx.nl/...
Hits:
1756
18 +:
Nee
Aantal stemmen:
2
 Huidige score:
10

Sitemeter:
(10)

Beschrijving website:

Ik heb een DB class gemaakt die ik graag zou laten keuren. Ik heb 1 abstract class en ik werk vandaaruit verder. Ik heb al een mysql class gemaakt. Ik heb ook plannen om classes te maken voor: PostgreSQL, MS-SQL, MySQLi en ODBC.


Pagina:

Offline  nemesiskoen
Gepost op: 06 mei 2006 - 13:02
Gouden medaille

PHP expert




Waarom gooi je Exceptions en handel je ze af binnen 1 (korte) functie? Wat is het nut hiervan? Dit is gewoon interessant doen...

Als je dan toch met exceptions wil werken doe het dan goed, stuur geen boolean waarden terug maar gooi exceptions. Vang deze dan op 'binnen' de code en handel deze daar af.

En wat in GODSNAAM is dit:
  1. if ($result === false) { // the result is false
  2. // get the last result
  3. $result = $this->lastResult;
  4.  
  5. // check for an resource
  6. if (is_resource($result)) { // the result is an resource
  7. // return the assoc
  8. return mysql_fetch_assoc($result);
  9. } else { // it isn't a resource
  10. // return false
  11. return false;
  12. }
  13. } elseif (is_resource($result)) { // the result is an resource
  14. // return the assoc
  15. return mysql_fetch_assoc($result);
  16. } else { // it isn't an resource
  17. // return false
  18. return false;
  19. }


2maal hetzelfde doen onder elkaar?

  1. if ($result === false) {
  2. $result = $this->lastResult;
  3. }
  4.  
  5. if (is_resource($result)) {
  6. return mysql_fetch_assoc($result);
  7. } else { // it isn't a resource
  8. return false;
  9. }


Het is trouwens 'a resource'. Laat aub dat Engels weg, want bij de eerste de beste zin loopt het al in het honderd.

En bij je voorbeeld laat je de handigheid van de hierbovenbeschreven functie weg (dat het result wordt onthouden):

  1. $db->query("SELECT * FROM table");
  2. while ($array = $db->fetch_assoc()) {
  3. echo '<pre>';
  4. var_dump($array);
  5. echo '</pre>';
  6. }
  7. ?>


Het idee zit er in! Nu alleen de uitwerking nog. Ik hoop binnenkort een nieuwere versie te zien (een iets meer _nuttigere_).

Offline  Maarten
Gepost op: 06 mei 2006 - 13:03
Erelid



Nutteloos..
zie http://www.site...mp;id=1809 voor een woordje uitleg.

Offline  kokx
Gepost op: 06 mei 2006 - 13:06
Onbekend



@nemesiskoen: Mischien lijkt het dat ik 2 keer hetzelfde doe onderelkaar. Maar ik check eerst of ik het laatste resultaat moet nemen of het gegeven resultaat. Daarna voer ik op dat resultaat een check uit.

Edit: @murfy: Volgensmij vergelijk je appels met peren. Stijn had een class gemaakt met functies om query's te bouwen. Ik heb alleen een class om query's uit te voeren en fouten af te handelen.

@nemesiskoen: De exeptions heb ik daar even tijdelijk neergezet. Later ga ik daar een uitgebreidere error handling van maken.

Offline  nemesiskoen
Gepost op: 06 mei 2006 - 13:22
Gouden medaille

PHP expert




kokx: Het lijkt niet alleen of je 2x hetzelfde doet, dit is ook zo.
Wat is het verschil tussen deze regels:

  1. if (is_resource($result)) { // the result is an resource
  2. // return the assoc
  3. return mysql_fetch_assoc($result);
  4. } else { // it isn't a resource
  5. // return false
  6. return false;
  7. }


  1. elseif (is_resource($result)) { // the result is an resource
  2. // return the assoc
  3. return mysql_fetch_assoc($result);
  4. } else { // it isn't an resource
  5. // return false
  6. return false;
  7. }


Buiten dat je bij die laatste een elseif gebruikt. Je voert tweemaal dezelfde check uit en vervolgt ook tweemaal dezelfde handeling. En dit is niet de enige functie waar je dit doet.

Ik zal heel die hijsa eens herschrijven (ik laat alles staan zoals jij het doet, alleen haal ik dubbele acties weg) en zien hoeveel regels minder ik heb. Dit wil niet zeggen dat mijn resultaat een goede DB klasse is!

http://pastebin.be/1106/

Dit is niet persé beter, maar er worden tenminste geen acties 2x gedaan.

Offline  kokx
Gepost op: 06 mei 2006 - 13:32
Onbekend



@nemesiskoen: Ik doe 2x hetzelfde ja. Maar ik doe het 2 keer met een ander resultaat.

Offline  Richard
Gepost op: 06 mei 2006 - 13:36
Crew algemeen



Je kunt gewoon eerst checken of het false is, dan resultaat veranderen, en dan pas de is_resource check doen, zoals nemesiskoen al zei;)

Offline  kokx
Gepost op: 06 mei 2006 - 13:38
Onbekend



Dat had ik ook kunnen doen. Iniedergeval bedankt voor het idee.

Offline  Maarten
Gepost op: 06 mei 2006 - 18:41
Erelid



Uuhm.. of je nu iets doet om query's op te bouwen of om ze uit te voeren, dat maakt niet uit, het blijft nutteloos. In die andere showcase post staat gewoon mooit uitgelegd waarom dergelijke classes nutteloos zijn.

Offline  b4nkr0bz0r
Gepost op: 06 mei 2006 - 19:38
PHP gevorderde



waarom maak je een functie voor assoc en object? en niet in een if-statement of een switch-statement ? het is nu precies dezelfde functie alleen retourneer je wat anders, en waarom gebruik je de ene keer object en de andere assoc ?

Verder heb je een functie die mysql_fetch_row(); retourneerd maar je kan geen 2e en 3e parameter meegeven ?

Je kan wel beter volgens mij...

Offline  kokx
Gepost op: 08 mei 2006 - 16:48
Onbekend



@Murfy: Ik vind het nutteloos om op een db class te stemmen als je een db class nutteloos vind. Dan vind ik dat je beter niet kan stemmen. Ik vraag om een mening hoe je de db class vind. Niet of een db class nutteloos is of niet.

Offline  xSc
Gepost op: 11 mei 2006 - 14:57
Onbekend



DB Class is niet nutteloos. Je hebt er absoluut wel wat aan. Verder: Murfy, als je met zouteloos commentaar komt, kun je beter niets zeggen. Neem een voorbeeld aan Nemiskoen / Jexus.

Pagina:
Posten van een reactie is niet mogelijk.

 Bekijk:

 Laatste toevoegingen :
[13-01] World of Captai...
[20-08] Eerste website
[19-07] PatrolServer - ...
[15-01] Schaken
[23-09] umuziek
[05-07] AdvertentiePlek
[17-04] Ingangsexamen G...
[25-01] seventie
[20-07] Finactum
[18-05] sopularity
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.092s