PHP: <?php use core\Application; return function (Application $application) { $error = $application->getContainer()->get('settings')['error']; $application->errorHandler($error['display'], $error['log'], $error['class']); }; массив, попадающий в контейнер: PHP: <?php return [ 'settings' => [] ]; Почему нет ошибки, что нет ключа - 'error'!!!??? p.s. дело в том, что если массив имеет вид: Код (Text): <?php return []; то я получаю ошибку, что не найден ключ - 'settings'
"конь в сферическом вакууме" ... что покажет print_r($application->getContainer()->get('settings')[) ? как реализован этот метод ...итд
обычный геттер PHP: public function get($key) { if (array_key_exists($key, $this->result)) { return $this->result[$key]; } if (!array_key_exists($key, $this->dependencies)) { if (class_exists($key)) { $reflectionClass = new ReflectionClass($key); $args = []; if ($constructor = $reflectionClass->getConstructor()) { foreach ($constructor->getParameters() as $parameter) { if ($parameter->getType()->isBuiltin()) { if (!$parameter->isDefaultValueAvailable()) { throw new Exception("Не указано значение по умолчанию параметра: $parameter->name"); } $args[] = $parameter->getDefaultValue(); } else { $args[] = $this->get($parameter->getType()->getName()); } } } return $this->result[$key] = $reflectionClass->newInstanceArgs($args); } throw new Exception("Не найдена зависимость: $key"); } $dependency = $this->dependencies[$key]; if ($dependency instanceof Closure) { $this->result[$key] = $dependency($this); } else { $this->result[$key] = $dependency; } return $this->result[$key]; } --- Добавлено --- Код (Text): Array ( ) --- Добавлено --- @ADSoft PHP: print_r($application->getContainer()->get('settings')['error']); // не выводит - НИЧЕГО :) --- Добавлено --- @ADSoft если есть ключ error с массивом, то оттуда берутся значения естественно
@ADSoft НЕМНОГО разобрался: на отсутствие ключа settings вылетает цветная ошибка (xdebug), на отсутствующий ключ error цветная ошибка вылетает, если прописать error_reporting(-1), получается отсутствию ключа settings закон не писан и ошибка вылетает без error_reporting(-1) прикольно