Ich hab wiedermal ein Problem mit der Vererbung der Klasse sBasket. Habe alles wie gewohnt gemacht, und mit der sAdmin und sArticles funzt das ja auch ganz prima. Was mache ich falsch? [code]<?php include ("$path/sBasket.php");
class myBasket extends sBasket
{
public function sGetBasket(){
...
}
}
?>[/code] Diese Datei myBasket.php liegt ganz ordentlich im Ordner inherit. Wenn ich die gewollten Änderungen direkt in der sBasket vornehme, dann funktioniert auch alles ganz prima, aber das wollen wir ja nicht. Bin ich nu einfach schon betriebsblind? Gruss René
In welcher Shopware-Version? 3.5.3?
Da wird der inherit Ordner nicht mehr unterstützt, zumindest nicht offiziell - der ist nur noch aus Kompatiblitätsgründen vorhanden. Im Idealfall würdest du dort mit Hooks & Events arbeiten und auf eine direkte ANpassung der Klassen komplett verzichten, wenn das nicht möglich ist - schau dir mal den Ordner local_old/class an - dort z.B. eine sCustomBasket.php anlegen mit folgendem Inhalt [code]
ahja… das ist also der Trick Ich habe aber schon Anpassungen im inherit- Ordner. Können die da bleiben oder funzt das irgendwann nicht mehr? Sollte ich die Dateien besser auch in den Ordner local_old/class kopieren? Ich glaube hier auch mal gelesen zu haben, das die Hooks auch schon deprecated sind. Stimmt das? Gruss René
Die Hookpoints - das ist aber was ganz anderes, damit wird Code an bestimmten Stellen aus der Datenbank ausgelesen und via eval ausgeführt - das ist in jedem Fall deprecated ;)) Die Hooks die ich meine, dienen den der Mehrfach-Überlagerung beliebiger Funktionen - http://www.shopware.de/wiki/Tutorials-z … 2_444.html schau dir dort z.B. einmal das Tutorial API-Einbindung an, dann wird das klarer. Am besten alles nach local_old kopieren - inherit wird in zukünftigen Releases definitiv „verschwinden“
es funktioniert prima! Aber das z.B. der Ordner inherit nicht mehr unterstützt wird, ist das irgendwo beschrieben? Hab ich das überlesen? Bin eigentlich sehr genau die Release Notes des Patches durchgegangen… Das Tutorial (und auch noch einige andere) werde ich auf jeden Fall auch noch durcharbeiten. Aber erstmal steht der knappe Zeitplan, um produktiv zu gehen… und bis dahin ist noch reichlich zu tun Auf jeden Fall Danke für die schnelle Info :thumbup: Gruss René
Es gibt einen Artikel zur Migration 3.0.x auf 3.5.0 - habe die Info dort ergänzt: http://www.shopware.de/wiki/_detail_536.html
achso… dann bin ich also in die Falle gelaufen, dass das alte System bis 3.5.2 (habe ja erst mit der 3.5.1 angefangen) zwar noch unterstützt wurde, aber eigentlich schon zu den Akten gelegt war. Den Migrationsartikel hab ich mir nicht angeschaut, weils mich ja nicht betraf. Naja und wenn was funktioniert fragt man ja auch nicht nach… Aber für solche Dinge, habe ich echtes Talent Gruss René
Ja, dieser Ordner ist ein Pre 3.5 Relikt Vorher wurden ja viele Anpassungen über die direkte Vererbung der Core-Klassen realisiert - das ist natürlich nur bedingt Updatekompatibel - deshalb bei Zeiten mal durch die Tutorials arbeiten, das neue Plugin-System ist deutlich leistungsfähiger und ermöglicht die minimal invasive Integration von Anpassungen, das sollte also der direkten Anpassung von Funktionen immer vorgezogen werden
na nu haste mich aber so neugierig gemacht, da musste ich gleich mal nachlesen… und ist ja Hammer! Das heisst, ich kann mich quasi in jede Funktion einklinken?! Jetzt versteh ich auch, warum HookPoints nicht mehr benötigt werden, denn mit den Hooks bekomme ich das ja genauso hin und darüber hinaus kann ich ja auch dem Weg auch die komplette Funktion ersetzen… Wie siehst aber mit der Performance aus? es wird ja jedesmal ein Event gefeuert den man ja abonniert… oder wird das übers Caching abgefangen? Gruss René
Wie meinst du das genau? Die Hooks feuern ja keine Events - schau mal in den Ordner engine/Shopware/Proxies - Enlight erzeugt dort automatisch temporäre PHP-Klassen, mit denen die (Mehrfach)Vererbung realisiert wird - das hat also performancetechnisch keine großen Auswirkungen - ist genauso schnell oder langsam wie jede andere Form der Code-Überlagerung!
ahja… logisch, ich komme gelegentlich mit den Hochsprachen durcheinander. Das passiert eben wenn man an mehreren Baustellen gleichzeitig arbeitet :oops: Gruss René