Hallo allerseits, ich habe innerhalb eines Plugins 2 hooks und würde gerne eine Variable vom ersten hook zwischen speichern, um darauf in zweiten hook zugreifen zu können: public function install() { $this-\>subscribeEvent( "sAdmin::sGetPremiumShippingcosts::before", "beforeGetPremiumShippingcostsHook" ); $this-\>subscribeEvent( "sAdmin::sGetPremiumShippingcosts::after", "afterGetPremiumShippingcostsHook" ); } public function beforeGetPremiumShippingcostsHook( Enlight\_Hook\_HookArgs $arguments ) { // setze variable $variable = 123; // speicher irgendwie/irgendwo $this-\>variable = $variable; } public function afterGetPremiumShippingcostsHook( Enlight\_Hook\_HookArgs $arguments ) { // hole die variable $variable = $this-\>variable }
Welche Möglichkeiten habe ich zum Speichern einer Variable? Ich könnte natürlich einfach alles in der $_SESSION speichern - würde die Session allerdings ungerne mit Plugin Daten zumüllen. Kennt ihr eine geschickte Methode?! Vielen Dank & Gruß
Moin moin, also wenn $this->variable nicht funktioniert, versuch mal self::$variable. Sollte in PHP auch ohne Deklaration funzen. Ansonsten die statische Variable in einer eigenen Methode. public function install() { $this-\>subscribeEvent( "sAdmin::sGetPremiumShippingcosts::before", "beforeGetPremiumShippingcostsHook" ); $this-\>subscribeEvent( "sAdmin::sGetPremiumShippingcosts::after", "afterGetPremiumShippingcostsHook" ); } public function variable($val = null) { static $buffer = null; if($val === null) { return $buffer; } else { $buffer = $val; } } public function beforeGetPremiumShippingcostsHook( Enlight\_Hook\_HookArgs $arguments ) { // setze variable $variable = 123; // speicher irgendwie/irgendwo $this-\>variable($variable); } public function afterGetPremiumShippingcostsHook( Enlight\_Hook\_HookArgs $arguments ) { // hole die variable $variable = $this-\>variable() }
Ist natürlich ne extrem dreckige Variante, da die Methode variable() zwei Jobs erledigt. Erschwert anderen das rein denken. Deswegen gut dokumentieren.
Vielen Dank für deine Antwort. Da die hooks statisch per Klasse::hook_Methode() aufgerufen werden, kann ich Werte definitiv nicht einfach mit $this im aktuellen Objekt speichern. Interessant ist natürlich der Ansatz die Variable statisch zu definieren. Prinzipiell müsste es doch auch so funktionieren: public static $variable; public function beforeGetPremiumShippingcostsHook( Enlight\_Hook\_HookArgs $arguments ) { // speicher irgendwie/irgendwo self::$variable = 123; } public function afterGetPremiumShippingcostsHook( Enlight\_Hook\_HookArgs $arguments ) { // hole die variable $variable = self::$variable; }
Habe ich noch nicht getestet - aber müsste funktionieren. Oder? Gruß