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]
----------------------------------------------------------------------

Reply via email to