2009年4月9日星期四

Re: [fw-mvc] Autoloading module resources with 1.8 Preview

-- Cristian Bichis <contact@zftutorials.com> wrote
(on Thursday, 09 April 2009, 12:41 PM +0300):
> I am just trying to see the advantage of such design (basically moving
> application bootstrap and configs under default module). At least now it does
> seems to be just an unnecessary complication.
>
> The fact that other modules are using same configs it rather makes the
> Bootstrap to be on global level rather than on a "global level into default
> module".

One idea we have tossed around is that modules would be responsible for
loading their own configuration. The question is whether we should
automate that, or whether it's the responsibility of the developer when
they write their module bootstrap.

Thoughts?


> Not too sure if this is what Matthew meant yet :) I am just
> experimenting with different ways at the moment, also I dont really
> see the problem with moving the bootstrap file, after all this is the
> default module, and you could assume that this module deals with the
> majority of the settings. Plus I dont have to manually configure the
> default autoloader now, I only need to add to them.
>
> Also the app will never work without a default module.
>
> With what you were trying before, I would double check your paths,
> also if you need to see whats registered etc get the autoloader using:
>
> $loader = Zend_Loader_Autoloader::getInstance();
> var_dump($loader);
>
> This will should you the entire autoloader config :)
>
> Thx
>
> Keith
>
>
>
> --
> Best regards,
> Cristian Bichis
> www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com
>
> I have just updated my code after Matthews earlier comments. So now I have:
>
> modules
> storefront
> Bootstrap.php <- Main bootstrap subclasses
> Zend_Application_Module_Bootstrap
>
> and a config like:
>
> bootstrap.path = APPLICATION_PATH"/modules/storefront/Bootstrap.php"
> bootstrap.class = "Storefront_Bootstrap"
>
> storefront.resources.frontcontroller.moduledirectory =
> APPLICATION_PATH"/modules"
> storefront.resources.frontcontroller.defaultmodule = "storefront"
> storefront.resources.frontcontroller.throwexceptions = false
> storefront.resources.frontcontroller.params.prefixDefaultModule = true
> storefront.resources.frontcontroller.plugins.action = "SF_Plugin_Action"
> storefront.resources.frontcontroller.plugins.admin =
> "SF_Plugin_AdminContext"
>
> By doing it this way Zend_Application will auto register the
> autoloaders for you :)
>
> code is here http://code.google.com/p/zendframeworkstorefront/
>
> Matthew, is this what you meant?
>
> Thx
>
> Keith
>
>
> 2009/4/9 Cristian Bichis <contact@zftutorials.com>:
>
>
> See my answer below...
>
> keith Pope wrote:
>
> 2009/4/9 Matthew Weier O'Phinney <matthew@zend.com>:
>
>
> -- keith Pope <mute.pop3@googlemail.com> wrote
> (on Wednesday, 08 April 2009, 10:17 PM +0100):
>
>
> The module resource skips the default module, you need to set that one
> up yourself, I think :)
>
>
> Your default module should be the one whose bootstrap you are attaching
> to Zend_Application typically.
>
>
> Indeed that makes more sense :) I look forward to your example
> hopefully I have got it mostly correct :)
>
>
> MyAutoloader is:
>
> //set Autoloader
> protected function _initAutoloader()
> {
> $this->_logger->info('Bootstrap ' . __METHOD__);
>
> $this->bootstrap('frontcontroller');
> $this->bootstrap('logging');
>
> $this->_modules = array('admin' => MODULE_PATH . '/admin', 'default'
> => MODULE_PATH . '/default');
>
> foreach ($this->_modules as $namespace => $path) {
> $loader = new Zend_Application_Module_Autoloader(array(
> 'namespace' => $namespace,
> 'basePath' => $path,
> ));
> }
>
> return $this;
> }
> But i still got that error...
>
> Fatal error: Class 'Admin_Model_Acl' not found in
> D:\_Work\yda\application\Bootstrap.php on line 163
>
> If i change this line
>
> $this->_modules = array('Admin' => MODULE_PATH . '/admin', 'Default'
> => MODULE_PATH . '/default');
>
> I got this...
>
> Fatal error: Uncaught exception 'Zend_Controller_Exception' with message 'No
> default module defined for this application'
>
> Confusing...
>
> --
> Best regards,
> Cristian Bichis
> www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com
>
>
>
>
>
>
>
>
>
>
>

--
Matthew Weier O'Phinney
Software Architect | matthew@zend.com
Zend Framework | http://framework.zend.com/

没有评论: