Zen Cart observer

From Wiki @ Karl Jones dot com
Revision as of 11:52, 12 October 2015 by Karl Jones (Talk | contribs)

Jump to: navigation, search

A Zen Cart observer is an Observer design pattern in Zen Cart.

Example one

Example two

Observer/notifier "base" class:

QUESTION:

In the API tutorial it is explained that every class that want to make use of observer/notifier system has to extend the "base" class. However I cannot see how this can work. Maybe it is because I am a C++ guru and not a PHP. The problem as I see it is that we get different instances of the "base" class for every instance of observer or notifier class. Therefore the following observerclass will never get the notification from the shopping_cart class.

class myObserver extends base { function myObserver() { $this->attach($this, array('NOTIFIER_CART_ADD_CART_END')); } ... }

If the base class was static or was working on some global variables then it would be different. What have I misunderstood?

REPLY:

The documentation is buggy.

Your c'tor should instead say

$_SESSION['cart']->attach($this, array('NOTIFIER_CART_ADD_CART_END'));

for cart stuff. The cart object maintains a list of observers and calls them when the notify() method is called for the events they have registered for. Similarly, zco_notifier, etc.


See also