Я определил два класса (Environment and ConfigurationReader). Оба они зарегистрированы как общие зависимости.Максимальная рекурсия, получающая общую услугу
Класс среды пытается получить текущую среду, но для этого необходимо прочитать конфигурационный файл через ConfigurationReader.
Диаграмма последовательности:
Классы:
class Environment
{
...
public function resolve()
{
$config = DI::getDefault()->getCfg();
$config->getValue('pepe', 'db_name');
}
...
}
class ConfigurationReader
{
...
public function getValue($aConfig, $aKey)
{
$path = $this->getFile($aConfig);
}
protected function getFile($aConfig)
{
$env = DI::getDefault()->getEnv();
$path = 'config/' . $env->getShortName() . '/' . $aConfig . '.yml';
return $path;
}
...
}
И регистрируются и созданы в index.php:
...
$di = new FactoryDefault();
$di->setShared('env', function() use ($di) {
$env = new Services\Environment($di);
$env->resolve();
return $env;
});
$di->setShared('cfg', function() use ($di) {
return new Services\ConfigurationReader($di);
});
$di->getShared('cfg');
$di->getShared('env');
...
Итак, PHP авария на $config = DI::getDefault()->getCfg();
и говорит:
PHP Fatal error: Maximum recursion depth exceeded
Любые идеи?
Вы передаете $ di в свой класс ConfigurationReader, что вы делаете с ним в своем конструкторе? –