Ah ok, that makes more sense I wasnt sure how reliable that was :) 2009/3/24 Ben Scholzen 'DASPRiD' <[email protected]>: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > When creating your bootstrap file, the methods are actually executed in > the order they appear in the class. The same goes for the resources; > they are executed in the order they are added (FIFO). > ................................... > : ___ _ ___ ___ ___ _ ___ : > : | \ /_\ / __| _ \ _ (_) \ : > : | |) / _ \\__ \ _/ / | |) | : > : |___/_/:\_\___/_| |_|_\_|___/ : > :........:........................: > : Web : http://www.dasprids.de : > : E-mail : [email protected] : > : Jabber : [email protected] : > : ICQ : 105677955 : > :........:........................: > > > keith Pope schrieb: >> Hi Matthew, >> >> Your suggestions worked I have it working nicely now :) >> >> I would maybe suggest making this clear when the documentation is >> written, it was a little counter intuitive that the default module is >> handled differently to other modules. >> >> Also I still have some reservations about the control we have over the >> order in with bootstrap methods and resources are executed, its seems >> that you could end up using a lot of $this->bootstrap(''); calls >> within your bootstrap class/ resource classes. It may be a nice idea >> to also have a stack you could add to as well as standard way, so you >> can manage order in one place. >> >> One other thing to to get everything working I added this to my bootstrap >> class: >> >> class Bootstrap extends Zend_Application_Bootstrap_Base >> .... >> protected function _initDefaultAutoloader() >> { >> if (null === $this->_resourceLoader) { >> $this->_resourceLoader = new >> Zend_Application_Module_Autoloader(array( >> 'namespace' => 'Storefront', >> 'basePath' => APPLICATION_PATH . '/modules/storefront', >> )); >> $this->_resourceLoader >> ->addResourceType( >> 'modelResource', >> 'models/resources', >> 'Resource' >> ); >> $this->_resourceLoader >> ->addResourceType( >> 'service', >> 'services', >> 'Service' >> ); >> } >> return $this->_resourceLoader; >> } >> >> Is there a better way of doing this, I see that the >> Zend_Application_Module_Bootstrap already has the resource loader >> functionality, would it work if I extend from that instead of >> Zend_Application_Bootstrap_Base? >> >> Thx again, hope the feedback is of some use. >> >> Keith >> >> 2009/3/23 keith Pope <[email protected]>: >>> Thx for the tips Matthew :) >>> >>> I think my examples were a little confusing, I have been hacking about >>> all day trying to figure out my looping problem :) >>> >>> For my storefront app I use one module currently storefront which I >>> set as the default module, this was so I can have everything >>> namespaced nicely. I will try adding the resource autoloaders in the >>> bootstrap and see how that goes, though I did get the same loop error >>> when using more than one module. >>> >>> I will report back if I continue to have problems :) I know the >>> component is still being worked on, just trying to get my head around >>> the process so I can add it to the book chapters I am currently >>> working on. >>> >>> Thanks again for the help >>> >>> >>> 2009/3/23 Matthew Weier O'Phinney <[email protected]>: >>>> -- keith Pope <[email protected]> wrote >>>> (on Monday, 23 March 2009, 03:26 PM +0000): >>>>> I have been trying out Zend_App again as it seems to be moving on a >>>>> bit now, I am having some problems using modules, I keep getting: >>>>> >>>>> Maximum function nesting level of '100' reached, aborting! in >>>>> /home/keith/www/ZApp/library/Zend/Loader/PluginLoader.php on line 125 >>>>> >>>>> I have been trying to track down whats causing this for a while but >>>>> with no success, it seems to be when the modules bootstrap is called >>>>> it recalls everything??? >>>>> >>>>> Also I was wondering why the modules resource skips the default >>>>> module, how do you say add autoloader paths to the default module? >>>> Typically, the bootstrap you attach to Zend_Application will be the one >>>> from your default module -- which is why we skip it. I need to change >>>> the functionality slightly to get the default module name from the front >>>> controller, but this will be the basic functionality. >>>> >>>> If you want to add autoloader paths to the default module, you should >>>> create a bootstrap resource or initializer method for doing so. I have >>>> not done this at this time because, by convention currently, the default >>>> module has no namespace prefix, making it a bit more troublesome to >>>> setup resource autoloading in a way that people will be able to drop in >>>> to existing applications. >>>> >>>> As to your questions here... Does the bootstrap in APPLICATION_PATH . >>>> '/bootstrap/Bootstrap.php' contain a class named 'Bootstrap'? or does it >>>> contain the class 'Storefront_Bootstrap' which you reference below? If >>>> the latter, you need to modify how you pass the bootstrap argument to >>>> Zend_Application: >>>> >>>> 'bootstrap' => array( >>>> 'path' => APPLICATION_PATH . '/bootstrap/Bootstrap.php', >>>> 'class' => 'Storefront_Bootstrap', >>>> ), >>>> >>>> As for your other error: >>>> >>>> Maximum function nesting level of '100' reached, aborting! in >>>> /home/keith/www/ZApp/library/Zend/Loader/PluginLoader.php on line 125 >>>> >>>> This sounds like you're somehow specifying an object as the prefix to >>>> pass to the plugin loader. I haven't been able to reproduce the issue >>>> locally. >>>> >>>> A couple more comments below... >>>> >>>>> I am using the structure: >>>>> >>>>> modules >>>>> module1 >>>>> module2 >>>>> >>>>> And my app setup: >>>>> >>>>> <?php >>>>> $paths = array( >>>>> get_include_path(), >>>>> '../library/Incu', >>>>> '../library', >>>>> ); >>>>> set_include_path(join(PATH_SEPARATOR, $paths)); >>>> Use implode() instead of join(). It's faster. >>>> >>>>> defined('APPLICATION_PATH') >>>>> or define('APPLICATION_PATH', realpath(dirname(__FILE__) . >>>>> '/../application')); >>>>> defined('APPLICATION_ENV') >>>>> or define('APPLICATION_ENV', 'development'); >>>>> >>>>> require_once 'Zend/Application.php'; >>>>> >>>>> $application = new Zend_Application(APPLICATION_ENV, array( >>>>> 'bootstrap' => APPLICATION_PATH . '/bootstrap/Bootstrap.php', >>>>> 'autoloadernamespaces' => array('Zend', 'SF'), >>>> >>>> BTW, you'll want to append the above with '_': array('Zend_', 'SF_'). >>>> This is so that the Autoloader can be used with libraries that do not >>>> use a separator in their class names. >>>> >>>> >>>>> 'resources' => array( >>>>> 'frontcontroller' => array( >>>>> 'moduledirectory' => APPLICATION_PATH . '/modules', >>>>> 'defaultmodule' => 'default', >>>> This latter setting isn't really necessary; that's the default value >>>> anyways. >>>> >>>>> ), >>>>> 'modules' => array(), >>>>> ), >>>>> 'phpsettings' => array( >>>>> 'display_errors' => true, >>>>> 'error_reporting' => E_ALL|E_STRICT, >>>>> 'date.timezone' => 'Europe/London', >>>>> ) >>>>> ) >>>>> ); >>>>> $application->bootstrap(); >>>>> $application->run(); >>>>> >>>>> unset($application); >>>> This unset() call isn't really necessary, either -- nothing else is >>>> happening after this. >>>> >>>> >>>>> module bootstrap: >>>>> >>>>> class Storefront_Bootstrap extends Zend_Application_Module_Bootstrap >>>>> { >>>>> public function _initModule() >>>>> { >>>>> $this->getResourceLoader() >>>>> ->addResourceType( >>>>> 'modelResource', >>>>> 'models/resources', >>>>> 'Resource' >>>>> ); >>>>> $this->getResourceLoader() >>>>> ->addResourceType( >>>>> 'service', >>>>> 'services', >>>>> 'Service' >>>>> ); >>>>> } >>>>> >>>>> public function run(){} >>>>> } >>>> -- >>>> Matthew Weier O'Phinney >>>> Software Architect | [email protected] >>>> Zend Framework | http://framework.zend.com/ >>>> >>> >>> >>> -- >>> ---------------------------------------------------------------------- >>> [MuTe] >>> ---------------------------------------------------------------------- >>> >> >> >> > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.9 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iEYEARECAAYFAknIwBEACgkQ0HfT5Ws789B7wgCgkPeXZlEf4zHU2LEVio/VwdS0 > 4cEAoNDMhKa5J7yJyArLXeTmlZpbEK77 > =xRUD > -----END PGP SIGNATURE----- >
-- ---------------------------------------------------------------------- [MuTe] ----------------------------------------------------------------------
