|
Huidige score: |
|
10 |
|
|
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. |
|
Gepost op:
06 mei 2006 - 13:02 |
|
|
|
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:
if ($result === false) { // the result is false
// get the last result
$result = $this->lastResult;
// check for an resource
if (is_resource($result)) { // the result is an resource
// return the assoc
return mysql_fetch_assoc($result);
} else { // it isn't a resource
// return false
return false;
}
} elseif (is_resource($result)) { // the result is an resource
// return the assoc
return mysql_fetch_assoc($result);
} else { // it isn't an resource
// return false
return false;
}
if ($result === false) { // the result is false // get the last result $result = $this->lastResult; // check for an resource if (is_resource($result)) { // the result is an resource // return the assoc } else { // it isn't a resource // return false return false; } } elseif (is_resource($result)) { // the result is an resource // return the assoc } else { // it isn't an resource // return false return false; }
2maal hetzelfde doen onder elkaar?
if ($result === false) {
$result = $this->lastResult;
}
if (is_resource($result)) {
return mysql_fetch_assoc($result);
} else { // it isn't a resource
return false;
}
if ($result === false) { $result = $this->lastResult; } } else { // it isn't a resource return false; }
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):
$db->query("SELECT * FROM table");
while ($array = $db->fetch_assoc()) {
echo '<pre>';
var_dump($array);
echo '</pre>';
}
?>
$db->query("SELECT * FROM table"); while ($array = $db->fetch_assoc()) { } ?>
Het idee zit er in! Nu alleen de uitwerking nog. Ik hoop binnenkort een nieuwere versie te zien (een iets meer _nuttigere_). |
|
|
|
Gepost op:
06 mei 2006 - 13:03 |
|
|
|
Erelid
|
|
|
|
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. |
|
|
|
Gepost op:
06 mei 2006 - 13:22 |
|
|
|
PHP expert
|
kokx: Het lijkt niet alleen of je 2x hetzelfde doet, dit is ook zo.
Wat is het verschil tussen deze regels:
if (is_resource($result)) { // the result is an resource
// return the assoc
return mysql_fetch_assoc($result);
} else { // it isn't a resource
// return false
return false;
}
if (is_resource($result)) { // the result is an resource // return the assoc } else { // it isn't a resource // return false return false; }
elseif (is_resource($result)) { // the result is an resource
// return the assoc
return mysql_fetch_assoc($result);
} else { // it isn't an resource
// return false
return false;
}
elseif (is_resource($result)) { // the result is an resource // return the assoc } else { // it isn't an resource // return false return false; }
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. |
|
|
|
Gepost op:
06 mei 2006 - 13:32 |
|
|
|
Onbekend
|
@nemesiskoen: Ik doe 2x hetzelfde ja. Maar ik doe het 2 keer met een ander resultaat. |
|
|
|
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;) |
|
|
|
Gepost op:
06 mei 2006 - 13:38 |
|
|
|
Onbekend
|
Dat had ik ook kunnen doen. Iniedergeval bedankt voor het idee. |
|
|
|
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. |
|
|
|
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... |
|
|
|
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. |
|
|
|
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. |
|
|
Posten van een reactie is niet mogelijk. |
Bekijk: |
|
|
|