2014-10-18 193 views
0

我正在创建一些项目管理功能。Laravel App :: make导致无限循环

无论何时创建/更新/删除模型,我在Laravel中使用Model Observers来创建审计跟踪。因此,例如,在创建项目时,观察者将自动创建项目审计模型的新实例,以创建存储已更改字段的新数据库条目。这个观察者也清除相关的缓存,确保用户可以访问最新的信息。

呼吁高速缓存储存库的问题导致此错误信息(不带堆栈跟踪):

Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_ERROR) 
Maximum function nesting level of '100' reached, aborting! 

我使用App ::使调用高速缓存储存库:

$this->projectAuditCache = App::make('cache\ProjectManagement\Interfaces\ProjectAuditCacheInterface'); 

审计高速缓存存储库然后只与另一个不依赖于其他的存储库构建。

堆栈跟踪唯一可能的线索是这样的:

Open: /home/vagrant/Sites/fixing/new_fixing/vendor/laravel/framework/src/Illuminate/Container/Container.php 
    * Determine if the given abstract has a leading slash. 
    * 
    * @param string $abstract 
    * @return bool 
    */ 
    protected function missingLeadingSlash($abstract) 
    { 
     return is_string($abstract) && strpos($abstract, '\\') !== 0; 
    } 

有没有办法得到这个工作?是使用App ::使错误的方式去做这件事?

谢谢你,埃德

回答

1

这将导致错误的XDebug PHP的调试扩展问题。 这个扩展想要回显的数组是大的。

只需简单地在php.ini中简单调整xdebug的最大嵌套级别设置。 或与您的应用程序启动时,应包含在命令

ini_set('xdebug.max_nesting_level', $limit) 

。对于Laravel 4.x应该是app/start/global.php

来源:StackOverflow