请注意 includes/classes/observers 目录不是一个自动加载目录,所以你将需要安排
application_top.php 来自动加载你的观察者类,如同上面所述(在 auto_loaders 目录中添加一个新的 config.xxxxx.php 文件,诸如此类)。让我们假设你正在使用 freeProduct 类(看下面的例子),你已经把它保存到
includes/classes/observers/class.freeProduct.php 文件。
你现在需要为这个类安排从而加载和实例化它。为了达到这个目的,你需要使用 appliction_top.php 自动加载系统。
在 includes/auto_loaders 创建一个名为 config.freeProduct.php 的文件,包含以下内容:
注意:已经选择10来引发这个观察者类在 session 开始之前加载的。注意:已经选择90作为从观察者需要附加到 $_SESSION['cart'] 类的偏移量(见下面的 freeProduct 例子),而 $_SESSION['cart'] 被实例化的位置是80。 把这些组合起来,让我们看一下真实的例子。
1.2.6 一个真实的例子
被要求众多的一个特性是:当客户消费超过一定金额的时候,商店可以自动添加一件免费赠品。
这个代码应该是智能的:它不仅可以在客户消费达到一定金额的时候添加免费赠品,同时也可以在客户改变购物车内容,消费金额在标准之下的时候,移除免费赠品。
传统的,虽然这个代码不是特别困难,它却意味要在 shoppingCart 类中的许多地方需要破解。通过 ONS,这将通过一个十分小的定制类来完成,同时不会造成任何的破坏。 以下是代码:
需要注意的几点:
首先,在类本身,我已经为系统设置了选项。这显然是一个坏的主意,通过一个后台模块来设置这些选项无疑要好许多
其次,注意我们事实是在一个类中观察两个事件。
所以我们正在观察 shopping_cart 类的 NOTIFIER_CART_ADD_CART_END 和 NOTIFIER_CART_REMOVE_END。
update 类是十分简单的,但是在它简单的管理中,需要完成我们要求它的工作。它首先是检查看购物车的总金额是否已经达到标准,如果还没有,添加免费赠品到购物车中。
然后它检查购物车的总金额是否在标准之下,如果免费赠品在购物车内,移除它。 这很酷,再增加点难度如何?
1.2.7 另外一个真实的例子
我们再次回到购物车和促销。另外一个经常要求的特性是 BOGOF 促销,或者买一送一。要达到这个目标比之前的例子要稍微难一些,因为购物车总额需要执行一些操作。然而你将看到这还是轻而易举的。