I'm currently working on some kind of web application based on ZendFramework. In one of the modules there's a need of calculating item price. When buying, by providing some promotional code client can get access to one or more discounts.
I thought of making it as decorators (pattern).
Base class calculating price (method "getPrice") can be modified by one of more decorator classes. Each of them can substract some value. So, each promotion has its own class implementing some interface (e.g. with method "getPrice")
Of course example is simplified ;)
My question is, where to place this bunch of classes (and interface) in directories structure *
*I'm using default ZF's modular directory structure.
They have something in common with models, maybe helpers? But definitely nothing in common with views...
Another thing is, that they should be bound with module, so they should be placed in that module folder.
Any help, any ideas will be appreciated :)
Sounds like you want these to go into
application/modules/somemodule/models
so a class likeSomemodule_Model_SomePromotion
would reside inapplication/modules/somemodule/models/SomePromotion.php
.I believe that the default resource autoloader for a modular setup will be configured to load models with classnames of hat format from that
models
folder. But if not, then add the following into the module (not the app) Bootstrap:Update
Per Comment by @brady.vitrano: If the module bootstrap extends
Zend_Application_Module_Bootstrap
, then a resource autoloader containing this mapping comes for free. No need to include it manually, unless you wish to add other resource types.You should structure your own library like this:
Where your class name is
Package_Subpackage_ClassName
. You should also add yourPackage_
prefix to the autoloader.