Исключение Laravel не выдается за пределы контроллера

#php #laravel #laravel-5

#php #laravel #laravel-5

Вопрос:

Мне интересно, может ли кто-нибудь мне помочь. У меня есть класс, который проверяет наличие ftp-соединения. когда я запускаю код внутри моего контроллера, он работает отлично, но когда я помещаю код внутри его собственного класса, он ничего не выдает. мой код выглядит следующим образом

 use Exception;

class Backup implements BackupContract
{

    public function testConnection($credentials)
    {
        try {
            $connection = @ftp_connect($credentials['host']);
            if (false === $connection) {
                throw new Exception('Cant connect.');
            }

            $logged_in = @ftp_login($connection, $credentials['username'], $credentials['password']);
            if (false === $logged_in) {
                throw new Exception('Credentials wrong.');
            }
            @ftp_close($connection);
        } catch (Exception $e) {
            return redirect()->route('createbackup')->withInput()->withErrors($e->getMessage());
        }
    }
}
  

Комментарии:

1. Это потому, что исключение было перехвачено } catch (Exception $e) { и внутри этого блока вы перенаправили страницу.

2. @vher2 Я не уверен, что вы имеете в виду… Тот же код корректно работает внутри стандартного контроллера

3. В вашем стандартном контроллере у вас тоже есть это redirect()->route( .... ?

4. Код тот же, в контроллере он работает, вне контроллера он не

5. каково значение $connection и $logged_in ?

Ответ №1:

Я думаю, вам либо понадобится пространство имен класса:

namespace AppClasses

или удалите use Exception и используйте:

 catch (Exception $e) {
   return redirect()
   ->route('createbackup')
   ->withInput()
   ->withErrors($e->getMessage());
}
  

Комментарии:

1. Это пространство имен App Procedures Backup;

2. Хорошо, действительно ли генерируется исключение? т. Е. Действительно ли оно создается внутри if блоков, чтобы генерировать исключение, если да, то происходит ли это внутри catch блока?