Opened 5 years ago
Closed 5 years ago
#1908 closed Aufgabe (wontfix)
xtDBquery flexibel machen wie xtc_db_fetch_array
| Reported by: | noRiddle | Owned by: | somebody |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Shop | Version: | 2.0.5.1 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description
Vorab wofür es sinnvoll wäre:
In letzter Zeit habe ich Module gebaut oder umgebaut, die bestimmte Artikel in begrenzter Anzahl aus der DB holen, entweder sortiert nach einem DB-Feld wie products_id oder at random, also zufällig.
Bei zufälliger Sortierung ist die Nutzung des Cache und DB-Cache nicht möglich.
Je nach Einstellung im Modul kann ich nun in der Funktion xtc_db_fetch_array() den zweiten Parameter true oder false setzen und somit die Cache-Verwendung steuern. Mit xtDBquery() geht dies jedoch nicht, sodaß man es folgendermaßen umschreiben muß:
Beispiel:
$use_cache = defined('MODULE_BLABLABLA_USE_SOANDSO') && MODULE_BLABLABLA_USE_SOANDSO = 'true' ? false : true;
$use_cache ? $my_query = xtDBquery(SQL) : $my_query = xtc_db_query(SQL);
während man bei xtc_db_fetch_array() schlicht dies machen kann:
$my_array = xtc_db_fetch_array($my_query, $use_cache);
Es wäre also gut auch in der Funktion xtDBquery() einen Steuerparameter zu haben.
Leider müsste man hier den Default auf true setzen, anstatt wie bei xtc_db_fetch_array() auf false, um nicht 1. viel Code ändern zu müssen und 2. irgendwelche Erweiterungen und Module zu brechen wo erstgenannte Funktion verwendet wird.
Gebe zu, mein Vorschlag ist diskussionswürdig.
Gruß,
noRiddle
Attachments (0)
Change History (7)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
Du hast doch bereits die Möglichkeit der Unterscheidung mit
xtc_db_query (ohne Caching)
oder
xtDBquery (mit Caching)
comment:3 by , 5 years ago
Ich sehe darin ehrlich gesagt keinen Vorteil, da wir die Funktionen beide bereits haben und es nur um 27 Zeichen geht, die man einsparen könnte.
$use_cache = defined('MODULE_BLABLABLA_USE_SOANDSO') && MODULE_BLABLABLA_USE_SOANDSO = 'true' ? false : true;
$my_query = $use_cache ? xtDBquery($my_query) : xtc_db_query($my_query);
vs (fiktive Funktion xtDBquery mit zweitem Parameter für Cache):
$use_cache = defined('MODULE_BLABLABLA_USE_SOANDSO') && MODULE_BLABLABLA_USE_SOANDSO = 'true' ? false : true;
$my_query = xtDBquery($my_query, $use_cache);
comment:4 by , 5 years ago
@GTB
Schon klar, aber ich sagte ja, wenn du ein Modul hast wo du sowohl mit als auch ohne Cache haben kannst, eben wegen Einstellungsmöglichkeiten at random oder normale Sortierung.
@Tomcraft
Ja, schon klar, Code-Ersparnis ist nicht das Argument.
Mir ging es eher um konsistente Vorgehensweisen.
Aber ich sagte ja auch "ist diskussionswürdig", war nur so 'ne Idee...
Gruß,
noRiddle
comment:6 by , 5 years ago
Dann halt so:
$function = 'xtc_db_query';
if (defined('MODULE_BLABLABLA_USE_SOANDSO') && MODULE_BLABLABLA_USE_SOANDSO = 'true') {
$function = 'xtDBquery';
}
$my_query = $function($my_query);
comment:7 by , 5 years ago
| Milestone: | modified-shop-2.0.5.2 |
|---|---|
| Resolution: | → wontfix |
| Status: | new → closed |

Korrektur:
Meinte natürlich verständlicher anstatt
so
Gruß,
noRiddle