Ответ 1
Я не думаю, что вы должны отключить или удалить пространства имен. Основной причиной пространства имен является предотвращение конфликтов с классами с одинаковым именем. Как только приложение станет больше, у вас будут классы с одинаковым именем. Пример из источника Framework:
Illuminate\Console\Application
и Illuminate\Foundation\Application
Оба называются одинаковыми. Только из-за пространства имен вы можете импортировать правильный класс. Конечно, вы также можете назвать их:
ConsoleApplication
и FoundationApplication
Но пока пространство имен обычно используется только при импорте класса в верхней части файла:
use `Illuminate\Console\Application`
Само имя используется везде в коде. Это то, что действительно загромождает ваш код, слишком длинные имена классов.
Помимо названия, пространства имен также поощряют лучшую структуру и помогают узнать, где находятся ваши файлы. Это потому, что структура по умолчанию Laravel соответствует PSR-4
. Это означает, что если у вас есть контроллер App\Http\Controllers\HomeController
, вы можете быть уверены, что найдете HomeController.php
в разделе app/Http/Controllers
.
Я знаю об этом, но это не нужно в проекте, над которым я работаю.
Возможно, это не имеет смысла для текущего проекта, но привыкание к пространствам имен поможет вам решать большие проекты в будущем.
И будучи пользователем Sublime Text, который не имеет autoimport, он действительно становится болью
Я не очень хорошо знаю Sublime Text, но CodeIntel может иметь автоматический импорт. В противном случае рассмотрим возможность переключения на другой редактор /IDE. Я очень рекомендую JetBrains PhpStorm
В конце концов, если вы все еще не хотите использовать пространства имен, продолжайте использовать Laravel 4 или найдите другую структуру, которая следует за менее хорошими практиками...
Удаление пространств имен из классов приложений
Пока вы не рекомендуете это, вы можете хотя бы удалить часть пространства имен в своем приложении.
Например, пространство имен контроллера по умолчанию App\Http\Controllers
может быть изменено без какого-либо пространства имен в RouteServiceProvider
:
protected $namespace = '';
И для ваших моделей вы можете просто удалить пространство имен в файле и ваше хорошее. Но имейте в виду, что без пространств имен автозагрузка PSR-4 больше не будет работать. Вам придется автозагружать файлы с помощью classmap
в composer.json