#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
блока?