Zum Inhalt

Die Shop-Klasse

Der Klasse Shop kommt eine zentrale Bedeutung zu. Sie dient in erster Linie als zentrale Registry für ehemals ausschließlich globale Variablen wie die NiceDB oder Smarty, dient aber auch der Erzeugung und Ausgabe von Instanzen für den neuen Objektcache.

In JTL-Shop 5.x können und sollten nun Klasseninstanzen von NiceDB und Smarty über die Shop-Klasse bezogen werden.

Ab JTL-Shop 5.0 wird folgende Vorgehensweise bevorzugt:

$product = Shop::Container()->getDB()->queryPrepared(
   'SELECT * FROM tartikel WHERE kArtikel = :artID',
   ['artID' => $articleID],
   ReturnType::SINGLE_OBJECT
);

Für Smarty wird in JTL-Shop 5.0 diese Vorgehensweise bevorzugt:

Shop::Smarty()
    ->assign('myvar', 123)
    ->assign('myothervar', 'foobar')
    ->display('mytemplate.tpl');

Die Methode JTLSmarty::assign(string $tpl_var, mixed $value) wurde "chainable" gemacht, um die Übersichtlichkeit im Code zu erhöhen.

Dependency Injection

Um neuen Code testbar zu machen, können Abhängigkeiten dem Konstruktor übergeben werden. Sinnvoll ist es, im Konstruktor sicherzustellen, dass die Dependency auch verfügbar ist, wenn sie nicht übergeben wurde.

Sprachfunktionen

Auch Sprachfunktionen sollten nun über die Shop-Klasse genutzt werden.

Shop::Lang()->get('basketAllAdded', 'messages');

Caching

Die Nutzung des Caches erfolgt analog den Sprachfunktionen und wird im Kapitel Cache näher erläutert.

Onlineshop-URL

Um die URL des Onlineshops zu beziehen, wurde die Methode Shop::getURL([bool $bForceSSL = false]) : string eingeführt.

Attention

Wir empfehlen dringend, diese Variante anstelle der veralteten Konstante URL_SHOP zu nutzen, da Shop::getURL() auch eine eventuelle Konfiguration von SSL berücksichtigt.

Die Ausgabe erfolgt stets ohne abschließenden Slash.

Debugging

Die Funktion Shop::dbg(mixed $content[, bool $die, string $prepend]) : void erlaubt "quick-and-dirty" Debugging.

Als ersten Parameter erhält sie beliebigen Inhalt zur Ausgabe. Wird der zweite Parameter auf true gesetzt, kann die weitere Ausführung des Codes unterbunden werden. Der dritte Parameter kann einen Text beinhalten, der vor der Debug-Ausgabe als Erläuterung erscheinen soll. Dies entspricht im Wesentlichen einem von <pre>-Tags umhüllten var_dump() mit ggf. anschließendem die().