Diese Methode wird praktisch nie auf Felder angewendet, die selbst auch NULL sein können.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Wie am besten Fehler zurückgeben?
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zitat von Koala Beitrag anzeigenpraktisch ?? aber manchmal doch ?
Wenn man unterscheiden muss, ob das Feld NULL ist, oder ob es den Datensatz nicht gab, greift man auf fetchAssoc() zurück.
Kommentar
-
Zitat von Koala Beitrag anzeigenna ja, das sollte man anders lösen.
Von Aussen betrachtet gebe ich dir aber recht
Kommentar
-
Dass sie keine Exception wirft, liegt daran, dass hier der unnötige Overhead durch ein andererseits fast obligatorisches TryCatch gespart werden soll.Immer Scalar; bei Fehler => Exception;[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
-
Zitat von nikosch Beitrag anzeigen
Knallt durch bis bootstrap und macht 500
Kommentar
-
Ich finde die Methode insgesamt etwas seltsam konzipiert und auch den Namen missverständlich. Ich würde erwarten, einen Datensatz als nicht-skalare Struktur zu erhalten.
Das Argument, beispielsweise try/catch zu umgehen, um die Performance zu steigern, finde ich kaum haltbar, wenn wir den Kontext eines abstrakten OOP-Query-Builders einbeziehen.
Aber, wie gesagt, ich würde wohl vor allem die Methode anders anlegen.
Kommentar
-
Zitat von mermshaus Beitrag anzeigenIch finde die Methode insgesamt etwas seltsam konzipiert und auch den Namen missverständlich. Ich würde erwarten, einen Datensatz als nicht-skalare Struktur zu erhalten.
Zitat von mermshaus Beitrag anzeigenDas Argument, beispielsweise try/catch zu umgehen, um die Performance zu steigern, finde ich kaum haltbar, wenn wir den Kontext eines abstrakten OOP-Query-Builders einbeziehen.
Kommentar
-
Aber genau das dürfte doch unter Fehler fallen und damit eine Exception werfen?!
SELECT nichtvorhanden FROM foo.
Das Problem ist IMHO die Chain-Struktur, die einen einzigen Vorgang simuliert, wo doch zwei (1: Query, 2: Fetch) passieren. Die zu einem Vorgang vereinen kann man machen (z.B. in einer spezialisierten Methode mit definierten (Fehler-)Rückgabewerten für bestimmte Ergebnisse, aber in einem generischen Ansatz macht das IMHO keinen Sinn. Und funktioniert auch nur, weil man auf das Absprungverhalten von Exceptions vertraut. Das deutet m.E. schon darauf hin, dass das ein Fehlansatz ist.[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
-
Zitat von rkr Beitrag anzeigenSorry, ich hatte nicht drueber nachgedacht, dass vielleicht nicht sofort klar ist, was die 3 Methoden machen: fetchOne: einzelnes Feld; fetchAssoc: key/value-array; fetchAssocList => array[key/value-array]. Erst wenn man das weiss, ergibt das einen Sinn. Sorry!
Einen Alternativvorschlag für einen Methodennamen habe ich nicht, auch weil ich die Methode eben nicht so designen würde. (Zumindest spontan nicht.)
Das habe ich so nicht sagen wollen. Es mag in der Theorie so sein, dass fetchOne in diesem Beispiel eine Exception werfen sollte, wenn versucht einen Feld-Wert zu lesen, dessen Datensatz es nicht gibt. In der Praxis ist das jedoch unerheblich. Praktisch immer.
Für mich klingt das so, als würde die Methode ständig für irgendwas zweckentfremdet, für das sie gar nicht gedacht ist. Etwa für Existenzchecks oder dergleichen (Pseudocode):
PHP-Code:if (null === $db->select(['id'])->from('table')->where(['id' => $id])->fetchOne()) {
// Eintrag mit $id existiert nicht
}
Kommentar
-
@nikosch
Würde ich ein allgemeines Framework für alle Fälle entwickeln, würde ich dir recht geben. Nun ist mein Framework vor allem für Geschäftsanwendungen ausgelegt. Da braucht man diese kleinteilige Differenzierung nicht. Würde ich das, was ich jetzt macht mit einem ZendFw machen, würde ich mir doch auch wieder Wrapper schreiben, welche die unnötige Komplexität wieder vereinfachen. Schließlich will ich mich so wenig wie möglich wiederholen.
Zitat von nikosch Beitrag anzeigenSELECT nichtvorhanden FROM foo
Zitat von mermshaus Beitrag anzeigenPHP-Code:if (null === $db->select(['id'])->from('table')->where(['id' => $id])->fetchOne()) {
// Eintrag mit $id existiert nicht
}
OT: Hat wer tapatalk? Ist das gut?
Kommentar
-
Eben das macht man ja praktisch nie.
Dann eher SELECT COUNT(id) FROM table WHERE id=?[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
-
Zitat von nikosch Beitrag anzeigenHäh? Wieso macht man das nie?
Zitat von nikosch Beitrag anzeigenDabei kann ich genauso ein Feld falsch angeben. Und was liefert die Methode dann? Eine Exception.
Kommentar
-
Ich kann mir gerade keinen Fall vorstellen, wo ich ein einzelnes Feld aus einer Datenbank auslesen möchte und Gefahr laufen könnte, dass es diesen Datensatz nicht gibt.[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
-
Zitat von nikosch Beitrag anzeigenHerrjeh, ich rede schon seit drei Postings von einem Feld (spalte) das es nicht gibt. Nicht von einem Datensatz. Ein fehlender Datensatz würde ja keine Exception erzeugen.
Und ja, eine nicht vorhandene Spalte sollte eine Exception werfen. Sollte aber schon zur Entwicklungszeit irgendwie auffallen!
Kommentar
Kommentar