-- Joachim Knust <[EMAIL PROTECTED]> wrote
(on Wednesday, 19 March 2008, 10:00 AM +0100):
> Hello!
> 
> > -----Original Message-----
> > From: James Dempster [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, March 18, 2008 11:18 PM
> > To: Simeon Goranov
> > Cc: [email protected]
> > Subject: Re: [fw-general] autoloading models
> 
> > $frontController = Zend_Controller_Front::getInstance();
> > $frontController->addModuleDirectory(ROOT_DIR.'/modules/');
> 
> As I understand the code in Controller/Front.php addModuleDirectory()
> only makes the front controller aware of the module's controller
> directory and has nothing to do with model class autoloading.

Correct.


> > On Tue, Mar 18, 2008 at 11:55 PM, Simeon Goranov
> > <[EMAIL PROTECTED]> wrote:
>  
> >     application
> >        models
> >        controllers
> >        views
> >     modules
> >        gallery
> >            models
> >            controllers
> >            views
> >        news
> >            models
> >            controllers
> >            views
> >     public
> >        index.php
> > 
> > 
> >     The questions is - which is the easier way to setup models
> > autoloading
> >     from all of the modules and application too.
> 
> The solutions posted on the list do not solve the problem in my oppinion.
> 
> My thoughts and experiences:
> You could load the application models by adding the directory to your 
> include_path. If you have e.g. a class User defined in 
> application/models/User.php, a "new User()" will work (autoload) without 
> problems. But it gets tricky if you try to do this with your module's models.
> Let's say you use a naming scheme for your module modles which adopts the one 
> for module controllers:
> The index controller class for the gallery module would be 
> Gallery_IndexController (in file 
> modules/gallery/controllers/IndexController.php), so a model class could be 
> Gallery_Image (in file modules/gallery/models/Image.php). But if you try "new 
> Gallery_Image()" this will fail because Zend_Load tries to load 
> gallery/image.php and searches the include_path for this.
> For this structure to work you need your own class loader wich can resolve 
> your modules' modle directory structure and falls back to Zend_Load if you 
> want to load any none model class.
> Next problem which will accur on cascading operations (update, delete) is 
> that Zend_Db_Table_Abstract uses Zend_Load::loadClass to load dependent 
> table's modle classes, which fails because Zend_Load doesn't know about 
> module model directories. Same problem prevents the use of 
> findManyToManyRowset() magic methods.
> 
> Maybe I miss something here and somebody has any smart solutions which might 
> be shared.
> 
> 
> Regards
> -joachim knust
> 
> 

-- 
Matthew Weier O'Phinney
PHP Developer            | [EMAIL PROTECTED]
Zend - The PHP Company   | http://www.zend.com/

Reply via email to