PHP / Xdebug嵌套级别错误

时间:2014-06-02 23:10:37

标签: php xdebug

是的我查看了本主题中的前几个问题,但仍然无法解决问题。我在我的脚本中尝试ini_set('xdebug.max_nesting_level', 5000);但仍然得到了错误。所以我会告诉你我正在做些什么来希望得到一些并得到解决方案。

基本上我使用数据库中的数据运行测试。

include 'testSettings.php';

//get config
$conf = Config::getInstance('sendCsv.php');
$conf->getConfig();

$formatter = new FormatterContext(new CSVFormatter($conf));
$formatter->formatLoads(null);

当我调用`$ formatter-> formatLoads(null)时出现抱怨;

所以这是FormatterContext()

class FormatterContext
{
    private $strategy;

    public function __construct(IFormatter $formater)
    {
        $this->strategy = $formater;
    }

    public function formatLoads()
    {
        return $this->formatLoads();
    }
}

界面:

abstract class IFormatter
{
    private $config;
    private $formatted;
    private $fileMaps;
    private $fileRows;

    abstract public function formatLoads($loads);

    public function __construct(Config $conf)
    {
        $this->fileMaps = $conf->__get('fileMaps');
        $this->fileRows = $conf->__get('fileRows');
    }
}

战略:

class CSVFormatter extends IFormatter
{


    public function formatLoads($loads)
    {
        echo "hello world!\n";
    }
}

现在我真的不知道我在这里做错了什么。这是我第一次遇到这个错误。除了嵌套级别= 5000我没有尝试过,我认为在那一点上有些事情是错误的。感谢

1 个答案:

答案 0 :(得分:0)

精氨酸!愚蠢的我......在上下文课程中,我调用了上下文formatLoad()而不是策略。哎呀!

上下文类应该是:

class FormatterContext
{
    private $strategy;

    public function __construct(IFormatter $formater)
    {
        $this->strategy = $formater;
    }

    public function formatLoads()
    {
        // return $this->formatLoads();
        return $this->strategy->formatLoads();
    }
}