Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
К примеру:
namespace App\Http\Controllers\Admin;
use \App\Classes\Models\User;
use \App\Classes\Models\Payment;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use Exception;
В какой последовательности записать? Какой тут принцип? Возможно сначала классы самой Laravel, а затем мои? Или еще как то?
Не в сети
Я обычно писал так:
namespace App\Http\Controllers\Admin;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use App\Classes\Models\User;
use App\Classes\Models\Payment;
use App\Http\Controllers\Controller;
1. Корень
2. Фрейм
3. Апп общее
4. Модуль
Когда начал писать под php7, стал писать в таком виде:
namespace App\Http\Controllers\Admin;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\{Validator, Auth, Config};
use App\Http\Controllers\Controller;
use App\Classes\Models\{User, Payment};
Классы, которые объявлены в корневом пространстве, я обычно не добавляю, а использую в виде \Exception...
try {
...
} catch( \Exception $e ) {
...
}
Исключения только тогда, когда таково требование стилизации заказчика или компании с которой я работаю.
Не в сети
В какой последовательности записать? Какой тут принцип? Возможно сначала классы самой Laravel, а затем мои? Или еще как то?
На самом деле некоторые IDE вообще сортируют use, поэтому особо изгаляться с порядком классов нет, если в команде будет/работает кто-то на такой IDE - все равно он будет перезатерт.
Когда начал писать под php7, стал писать в таком виде:
use Exception;
} catch( \Exception $e ) {
Будь внимателен, это код не для PHP 7.x, а для 5.x!
PHP 7+ это не Exception, а Throwable. Если нет задачи совместимости с 5.x, то просто заменяются все ссылки на Exception на Throwable (за исключением class ... extends Exception и throw new Exception). Если нужна совместимость, то обычно достаточно добавить перед catch Exception идентичный блок catch Throwable:
try {
...
} catch (Throwable $e) {
...
} catch (Exception $e) {
// такой же код, как в catch Throwable
}
Не в сети
Throwable.
Да 7-ка уже давно. Те лучше им все Exception заменить выходит?
Про порядок use не буду замарачиваться. Просто так чуть причешу, что в глаза сумбур не бросался
Не в сети
Да 7-ка уже давно. Те лучше им все Exception заменить выходит?
Да. Без Throwable ты не будешь ловить все ошибки.
До 7.0 Exception - базовый класс для всех исключений, а исключения почти не используются самим PHP (кроме некоторых модулей вроде PDO, которые могут выбрасывать исключения, например, при ошибке в SQL). Наравне с исключениями существует и второй механизм, унаследованный от PHP 3 - "ошибки" (errors). Это такая штука, которая не ловится try..catch в принципе, а только глобальным обработчиком set_error_handler(). В общем-то просто плохое наследие в языке и ничего больше.
Например, неверный аргумент в стандартную функцию типа substr([], ...) вызовет ошибку, а не исключение. Соответственно, catch (как и finally) в try { substr([], ...) } catch (...) будет полностью проигнорирован.
В 7.0 очень многие ошибки решили наконец причесать и заменить на исключения. Разработчики решили не создавать новый класс-наследник существующего Exception, а создать новый класс Error и сделать Error и Exception наследниками нового класса Throwable. Так как в 95% случаев в коде нет смысла в разделении на Exception и Error, то есть обрабатывать нужно любые проблемы - то и в catch (Exception), а не catch (Throwable) больше смысла нет.
Не в сети
класса Throwable
Throwable - это интерфейс
Не в сети