foreach возвращает дважды результат

188
14 мая 2018, 18:10

сообщество. Не пойму то ли баг, то ли фича.

// router.php
public function match()
    {
     // other code
        foreach ($this->routes AS $route) {
            if (true)) {
                // other code
                // Если все нормально вернет Route и механизм отработает
                // Но в лог попадет второй return 3;
                echo 2;
                return true;
            }
        }
        return 3;
    }
    // далее в index.php
    $router->run($router->match(), $di);

В error.log сыпятся ошибки

PHP Fatal error:  Uncaught TypeError: Argument 1 passed to system\\Router::run() must be an instance of system\\Route, boolean given, called in ... system\\Router->run(true, Object(system\\DependencyInjector))\n#1 {main} ...
PHP Fatal error:  Uncaught TypeError: Argument 1 passed to system\\Router::run() must be an instance of system\\Route, integer given, called in ... system\\Router->run(3, Object(system\\DependencyInjector))\n#1 {main} ...

То есть оба возврата выполняются и строка выводится. Есть мысли по этому поводу? Код вызывается только один раз, break не подействует. UPD: Если убрать строгий тип run(Route $route, Di $di) ошибка пропадает как и полагалось UPD: Банально не отрабатывается правило в htaccess на предмет favicon.ico . Запрос не находит картинку и сыплет ошибки. Вопрос решен

READ ALSO
Laravel Выборка записей из БД с пробелом

Laravel Выборка записей из БД с пробелом

В базе хранится запись Мобильные телефоныТак вот, при выборке и подстановке в атрибут value Ларавель оборачивает первое слово в кавычки - "Мобильные",...

170
Работа с итераторами, с++

Работа с итераторами, с++

Написать программу учета заявок на обмен квартир и поиска вариантов обменаКаждая заявка содержит сведения о двух квартирах: требуемой (искомой)...

289
fgets c++ подставить значение

fgets c++ подставить значение

исходники firebirdстрока ввода fgets

191