0

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

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

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

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::make 错误的方式来解决这个问题?

谢谢,埃德

4

1 回答 1

1

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

你可以简单地在你的php.ini. 或者用命令

ini_set('xdebug.max_nesting_level', $limit)

当你的应用程序启动时应该包含它。对于 Laravel 4.x,这将是app/start/global.php

资料来源:堆栈溢出

于 2014-10-18T17:19:40.070 回答