Oct 082017

One thing to consider when you’re writing a Zen Cart plugin that includes an observer-class module is the point at which any monitored notification is going to be “fired”.  Auto-loading observers, previously discussed here, are great since using that method can reduce the number of files that a plugin needs in its distribution … but there’s a potential downside (isn’t there always?).

All auto-loading observers are loaded at breakpoint 175 during the Zen Cart autoload process.  That processing loads all files present in the /includes/classes/observers directory whose names match auto.*.php and, if the class’ name adheres to the auto-loading “rules”, creates an instance of the associated class.

If the notifications that your plugin is observing are issued prior to breakpoint 175, then auto-loading isn’t for you!

For example, let’s say that your plugin is monitoring NOTIFIER_CART_ADD_CART_START, issued by the shopping-cart class at the beginning of an add-to-cart action.  Those cart-manipulation actions occur during init_cart_handler.php‘s processing at breakpoint 140, so an auto-loading observer will never see that notification.  Your plugin will need to include an additional file (in /includes/auto_loaders)  to instruct Zen Cart the point at which your observer should be loaded (prior to 140!) and instantiated and its observer-class file’s name must not start with “auto.“.

In summary, while auto-loading observers can simplify a plugin’s distribution, plugin authors need to ensure that auto-loading is compatible with the plugin’s expected functionality.

Sorry, the comment form is closed at this time.