Laravel App :: make导致无限循环

时间:2014-10-18 16:46:05

标签: laravel model repository-design

我正在创建一些项目管理功能。

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

问题是调用缓存存储库会导致出现此错误消息(没有堆栈跟踪):

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

我正在使用App :: make来调用缓存存储库:

$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 ::做错了吗?

谢谢,Ed

1 个答案:

答案 0 :(得分:1)

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

您只需在php.ini中调整xdebug的最大嵌套级别即可。 或者使用命令

ini_set('xdebug.max_nesting_level', $limit)

应在应用启动时加入。对于Laravel 4.x,它将是 app / start / global.php

来源:StackOverflow