Artisan: Инструмент управления Laravel
Введение
Что такое Artisan
Artisan — интерфейс командной строки, входящий в состав Laravel. Считайте Artisan помощником в решении самых разных задач, от настройки баз данных до очистки приложения от старых элементов. Каждый проект Laravel поставляется с Artisan, готовым помочь оптимизировать процесс разработки.
Почему Artisan так важен для Laravel разработчиков
Невозможно не подчеркнуть, насколько важен Artisan в экосистеме Laravel. Это не просто необходимый инструмент, это неотъемлемая часть разработки на Laravel. И вот почему:
- Повышение производительности: Artisan автоматизирует многие рутинные задачи, экономя время и снижая вероятность ошибок.
- Последовательность: Обеспечивает выполнение определённых операций стандартным образом в рамках всего проекта.
- Расширяемость: Можно создавать собственные команды Artisan для удовлетворения специфических потребностей своего проекта.
- Инструмент для обучения: Используя Artisan, можно глубже понять структуру Laravel и лучшие практики.
Начало работы с Artisan
Как получить доступ к Artisan
Получить доступ к Artisan очень просто. Откройте терминал, перейдите в корневой каталог проекта Laravel и введите:
php artisan
Эта команда выведет список всех доступных команд Artisan. Выполнение этой команды — как шпаргалка по всем крутым трюкам, которые может выполнить Artisan. И это то, что использовалось для написания этой статьи!
Базовый синтаксис и структура
Базовая структура команды Artisan такова:
php artisan command:name {argument} {--option}
command:name
— имя команды, которую необходимо выполнить запустить.{argument}
— обязательный параметр.{--option}
— необязательные флаги или параметры.
Например, для создания нового контроллера можно воспользоваться командой:
php artisan make:controller UserController
Общие параметры команд Artisan
Прежде чем мы перейдём к рассмотрению отдельных команд, давайте поговорим об опциях, доступных почти для каждой команды Artisan. Это как базовые движения волшебной палочки, которые должен знать каждый волшебник:
-h
или--help
: Показывает справку по команде. Это всё равно что спросить у Artisan:Что делает это заклинание?
.-q
или--quiet
: Подавляет весь вывод. Удобно при выполнении команд в скриптах.-V
или--version
: Отображает версию Laravel. Удобно для быстрой проверки версии.--ansi
или--no-ansi
: Включает или выключает вывод ANSI. Речь идёт о том, чтобы сделать вывод цветным (или нет).-n
или--no-interaction
: Пропускает любой интерактивный ввод. Отлично подходит для автоматических скриптов.--env
: Определяет, какую конфигурацию окружения использовать.-v
,-vv
или-vvv
: Увеличивает степень подробности сообщений. Большеv
— больше подробностей!
Теперь, когда рассмотрены основы, перейдём к конкретным командам Artisan. Расскажу о каждой из них, объясню, что делает команда, как её использовать и чем она удобна.
Команды Artisan: Исчерпывающее руководство
Управление приложением
artisan about
Команда about
— это как просьба к Artisan представить себя и приложение. Она предоставляет краткий обзор приложения Laravel.
Использование:
php artisan about
Параметры:
--only[=ONLY]
: Отображает только определённую секцию информации.--json
: Выводит информацию в формате JSON.
Команда about
отлично подходит, когда нужен быстрый снапшот конфигурации приложения, особенно если работаете над несколькими проектами.
artisan down
Команда down
переводит приложение в режим обслуживания. Эта команда, по сути, размещает на сайте табличку Вернёмся через некоторое время!
.
Использование:
php artisan down
Параметры:
--redirect[=REDIRECT]
: URL-адрес, на который будут перенаправляться все запросы.--render[=RENDER]
: Представление, отображаемое в режиме обслуживания.---secret[=SECRET]
: Секретная фраза для обхода режима обслуживания.--status[=STATUS]
: Код состояния, используемый при возврате ответа о режиме обслуживания.
Пример:
php artisan down --redirect=/maintenance --secret="1234"
Команда down
очень важна, когда необходимо развернуть обновления или выполнить обслуживание сайта.
artisan env
Команда env
отображает текущее окружение фреймворка. Это быстрый способ проверить, в каком окружении работает приложение.
Использование:
php artisan env
У команды env
нет уникальных опций. Она проста, но удобна при управлении несколькими средами (development, staging, production).
artisan up
Команда up
возвращает приложение из режима обслуживания. Как будто на сайт вернули табличку Открыто
.
Использование:
php artisan up
У команды up
нет уникальных опций. Обычно её используют после завершения работ по обслуживанию и для того, чтобы снова сделать сайт доступным.
Управление кэшем
artisan cache:clear
Команда cache:clear
делает именно то, что заявлено — очищает кэш приложения.
Использование:
php artisan cache:clear
Параметры:
--store[=STORE]
: Имя хранилища, которое необходимо очистить.--tags[=TAGS]
: Теги кэша, которые необходимо очистить.
Пример:
php artisan cache:clear --store=redis --tags=users
Команда cache:clear
очень удобна, если в приложение были внесены изменения и необходимо убедиться, что приложение не обслуживает неактуальные данные.
artisan cache:forget
Команда cache:forget
удаляет определённый элемент из кэша.
Использование:
php artisan cache:forget <key> [<store>]
Команда cache:forget
удобна, когда нужно удалить определённый фрагмент кэшированных данных, не очищая всё.
artisan cache:table
Команда cache:table
создаёт миграцию для таблицы cache
базы данных.
Использование:
php artisan cache:table
Команду cache:table
следует использовать, если планируется использовать для кэширования базу данных, а не файлы или Redis.
Управление конфигурацией
artisan config:cache
Команда config:cache
создаёт кэш файл для ускорения загрузки конфигурации.
Использование:
php artisan config:cache
У команды config:cache
нет уникальных опций. Она невероятно удобна для ускорения работы приложения в продакшне за счёт объединения всех конфигурационных файлов в один, кэшируемый файл.
artisan config:clear
Команда config:clear
удаляет файл кэша конфигурации.
Использование:
php artisan config:clear
Обычно команда config:clear
используется во время разработки, когда вносятся изменения в файлы конфигурации и необходимо убедиться, что не используется устаревшая, кэшированная конфигурация.
artisan config:publish
Команда config:publish
публикует конфигурационные файлы из пакетов в каталог config
приложения.
Использование:
php artisan config:publish [<name>]
Параметры:
--all
: Публикует конфигурационные файлы для всех пакетов.--force
: Перезаписывает существующие конфигурационные файлы.
Пример:
php artisan config:publish --all
Команда config:publish
удобна, когда необходимо настроить конфигурацию установленного пакета.
artisan config:show
Команда config:show
отображает значения конфигурации для заданного файла или ключа.
Использование:
php artisan config:show <config>
Пример:
php artisan config:show app.name
Команда config:show
позволяет быстро проверить значения конфигурации, особенно в различных средах.
База данных и миграция
artisan db:monitor
Команда db:monitor
отслеживает количество подключений к указанной базе данных.
Использование:
php artisan db:monitor
Параметры:
--databases[=DATABASES]
: Соединения базы данных для мониторинга.--max[=MAX]
: Максимальное количество соединений перед отправкой события.
Команда db:monitor
помогает следить за соединениями с базой данных, особенно в приложениях с высокой посещаемостью.
artisan db:seed
Команда db:seed
засеивает базу данных записями.
Использование:
php artisan db:seed
Параметры:
--class[=CLASS]
: Имя класса корневого сеятеля.--database[=DATABASE]
: Соединение с базой данных для засева.--force
: Принудительное выполнение операции в продакшне.
Пример:
php artisan db:seed --class=UsersTableSeeder
Команда db:seed
необходима, когда требуется заполнить/засеять базу данных исходными или тестовыми данными.
artisan db:show
Команда db:show
выводит информацию о заданной базе данных.
Использование:
php artisan db:show
Параметры:
--database[=DATABASE]
: Используемое соединение с базой данных.--json
: Выводит информации о базе данных в формате JSON.--counts
: Показывает количество строк в таблице.--views:
Показывает представления базы данных.--types
: Показывает типы, определяемые пользователем.
Команда db:show
удобна, когда нужен быстрый обзор структуры базы данных.
artisan db:table
Команда db:table
выводит информацию об определённой таблице базы данных.
Использование:
php artisan db:table [<table>]
Параметры:
--database[=DATABASE]
: Используемое соединение с базой данных.--json
: Выводит информацию о таблице в формате JSON.
Пример:
php artisan db:table users
Команда db:table
отлично подходит для изучения структуры конкретной таблицы.
artisan db:wipe
Команда db:wipe
удаляет все таблицы, представления и типы в базе данных.
Использование:
php artisan db:wipe
Параметры:
--database[=DATABASE]
: Используемое соединение с базой данных.--drop-views
: Удаляет все таблицы и представления.--drop-types
: Удаляет все таблицы и типы (только для Postgres).--force
: Принудительное выполнение операции в продакшне.
Команда db:wipe
удобна, когда необходимо начать с чистого листа, но будьте осторожны — она удалит все данные!
artisan migrate
Команда migrate
выполняет миграцию базы данных.
Использование:
php artisan migrate
Параметры:
--database[=DATABASE]
: Используемое соединение с базой данных.--force
: Принудительное выполнение операции в продакшне.--path[=PATH]
: Путь(и) к файлам миграций, которые должны быть выполнены.--realpath
: Указывает, что все предоставленные пути к файлам миграции являются предварительно разрешёнными абсолютными путями.--schema-path[=SCHEMA-PATH]
: Путь к файлу дампа схемы.--pretend
: Дамп SQL-запросов, которые будут запущены.--seed
: Указывает, следует ли повторно выполнять задачу засева.--step
: Принудительный запуск миграций, чтобы их можно было откатить по отдельности.
Пример:
php artisan migrate --force --seed
Команда migrate
необходима для применения изменений в базе данных и часто используется во время развёртывания приложений.
Генерация ключей и шифрование
artisan key:generate
Команда key:generate
задаёт ключ приложения.
Использование:
php artisan key:generate
Параметры:
--show
: Отображение ключа вместо модификации файлов.--force
: Принудительное выполнение операции в продакшне.
Пример:
php artisan key:generate --show
Команда key:generate
необходима при настройке нового приложения Laravel. Сгенерированный ключ используется для всех зашифрованных значений, поэтому он важен для безопасности.
Команды Make
Команды Make — как волшебные заклинания, создающие новые файлы для различных компонентов Laravel. Они невероятно удобны для быстрого создания каркаса приложения.
artisan make:cast
Команда make:cast
создаёт новый кастомный класс каста Eloquent.
Использование:
php artisan make:cast <name>
Параметры:
--force
: Создаёт класс, даже если каст уже существует.--inbound
: Создаёт входящий класс каста.
Пример:
php artisan make:cast JsonCast
Используйте команду make:cast
, когда нужно создать собственную логику каста для моделей Eloquent.
artisan make:channel
Команда make:channel
создаёт новый класс канала.
Использование:
php artisan make:channel <name>
Параметры:
--force
: Создаёт класс, даже если канал уже существует.
Пример:
php artisan make:channel OrderChannel
Команда make:channel
удобна, когда работаете с системой трансляции событий Laravel.
artisan make:command
Команда make:command
создаёт новую команду Artisan.
Использование:
php artisan make:command <name>
Параметры:
--command[=COMMAND]
: Команда терминала, которая будет использоваться для вызова класса.--force
: Создаёт класс, даже если консольная команда уже существует.--test
: Создаёт сопутствующий тест PHPUnit для консольной команды.--pest
: Создаёт сопутствующий тест Pest для консольной команды.
Пример:
php artisan make:command SendEmails --command=emails:send
Используйте команду make:command
, когда хотите создать пользовательские команды Artisan для своего приложения.
artisan make:component
Команда make:component
создаёт новый класс компонента представления.
Использование:
php artisan make:component <name>
Параметры:
--inline
: Создаёт компонент, который отображает встроенное представление.--view
: Создаёт анонимный компонент, содержащий только представление.--force
: Создаёт класс, даже если компонент уже существует.--test
: Создаёт сопутствующий тест PHPUnit для компонента.--pest
: Создаёт сопутствующий тест Pest для компонента.
Пример:
php artisan make:component Alert --inline
Команда make:component
отлично подходит для создания многократно используемых компонентов пользовательского интерфейса в приложении Laravel.
artisan make:controller
Команда make:controller
создаёт новый класс контроллера.
Использование:
php artisan make:controller <name>
Параметры:
--api
: Исключает из контроллера методыcreate
иedit
.--type[=TYPE]
: Вручную указать stub-файл контроллера для использования.--force
: Создаёт класс, даже если контроллер уже существует.--invokable
: Создаёт вызываемый класс контроллера с одним методом.--model[=MODEL]
: Создаёт контроллер ресурсов для заданной модели.--parent[=PARENT]
: Генерирует вложенный класс контроллера ресурсов.--resource
: Генерирует класс контроллера ресурсов.--requests
: Генерирует классы FormRequest для хранения и обновления.---test
: Генерирует сопутствующий тест PHPUnit для контроллера.--pest
: Генерирует сопутствующий тест Pest для контроллера.
Пример:
php artisan make:controller UserController --resource --model=User
Контроллеры — сердце логики приложения, поэтому команда make:controller
часто используется при разработке Laravel приложения.
artisan make:event
Команда make:event
создаёт новый класс событий.
Использование:
php artisan make:event <name>
Параметры:
--force
: Создать класс, даже если событие уже существует.
Пример:
php artisan make:event OrderShipped
Используйте make:event
, когда хотите создать собственные события в приложении Laravel.
artisan make:job
Команда make:job
создаёт новый класс задания.
Использование:
php artisan make:job <name>
Параметры:
--force
: Создаёт класс, даже если задание уже существует.--sync
: Указывает, что задание должно быть синхронным.--test
: Генерирует сопутствующий тест PHPUnit для задания.--pest
: Генерирует сопутствующий тест Pest для задания.
Пример:
php artisan make:job ProcessPodcast --sync
Задания отлично подходят для выполнения трудоёмких задач в фоновом режиме, улучшая отзывчивость приложения.
artisan make:listener
Команда make:listener
создаёт новый класс слушателя событий.
Использование:
php artisan make:listener <name>
Опции:
--event[=EVENT]
: Класс прослушиваемого события.--force
: Создаёт класс, даже если слушатель уже существует.--queued
: Указывает, что слушатель событий должен быть поставлен в очередь.--test
: Генерирует сопутствующий тест PHPUnit для слушателя.--pest
: Генерирует сопутствующий тест Pest для слушателя.
Пример:
php artisan make:listener SendOrderConfirmation --event=OrderShipped
Слушатели помогают реагировать на события в приложении, делая его более модульным и удобным в обслуживании.
artisan make:mail
Команда make:mail
создаёт новый класс электронной почты.
Использование:
php artisan make:mail <name>
Параметры:
--force
: Создаёт класс, даже если Mailable уже существует.--markdown[=MARKDOWN]
: Создаёт новый Markdown-шаблон для Mailable.--view[=VIEW]
: Создаёт новый шаблон Blade для Mailable.--test
: Генерирует сопутствующий тест PHPUnit для Mailable.--pest
: Генерирует сопутствующий тест Pest для Mailable.
Пример:
php artisan make:mail OrderShipped --markdown=emails.orders.shipped
Команда make:mail
необходима, когда необходимо настроить уведомления по электронной почте в приложении Laravel.
artisan make:middleware
Команда make:middleware
создаёт новый класс middleware.
Использование:
php artisan make:middleware <name>
Параметры:
--test
: Генерирует сопутствующий тест PHPUnit для Middleware.--pest
: Генерирует сопутствующий тест Pest для Middleware.
Пример:
php artisan make:middleware EnsureUserIsSubscribed
Middleware имеет решающее значение для фильтрации HTTP-запросов, поступающих в приложение.
artisan make:model
Команда make:model
создаёт новый класс модели Eloquent.
Использование:
php artisan make:model <name>
Параметры:
-a
,--all
: Генерирует классы миграции, сидера, фабрики, политики, контроллера ресурсов и запроса формы для модели.-c
,--controller
: Создаёт новый контроллер для модели.-f
,--factory
: Создаёт новую фабрику для модели.--force
: Создаёт класс, даже если модель уже существует.-m
,--migration
: Создаёт новый файл миграции для модели.--policy
: Создаёт новую политику для модели.-s
,--seed
: Создаёт новую сеялку для модели.-p
,--pivot
: Указывает, должна ли создаваемая модель быть пользовательской моделью промежуточной таблицы.-r
,--resource
: Указывает, должен ли генерируемый контроллер быть контроллером ресурсов.--api
: Указывает, должен ли генерируемый контроллер быть контроллером ресурсов API.-R
,--requests
: Создаёт новые классы запросов формы для контроллера ресурсов.--test
: Генерирует сопутствующий тест PHPUnit для модели.--pest
: Генерирует сопутствующий тест Pest для модели.
Пример:
php artisan make:model Product -mfc
Команда make:model
мощный инструмент, способный за один раз создать несколько связанных файлов для модели.
artisan make:policy
Команда make:policy
создаёт новый класс политики.
Использование:
php artisan make:policy <name>
Параметры:
--model[=MODEL]
: Модель, к которой применяется политика.--guard[=GUARD]
: Защитник, на который опирается политика.--force
: Создаёт класс, даже если политика уже существует.
Пример:
php artisan make:policy PostPolicy --model=Post
Политики помогают организовать логику авторизации вокруг определённой модели или ресурса.
artisan make:provider
Команда make:provider
создаёт новый класс сервис провайдера.
Использование:
php artisan make:provider <name>
Параметры:
--force
: Создаёт класс, даже если провайдер уже существует.
Пример:
php artisan make:provider PaymentServiceProvider
Сервис провайдеры занимают центральное место в процессе загрузки приложений Laravel.
artisan make:request
Команда make:request
создаёт новый класс запроса формы.
Использование:
php artisan make:request <name>
Параметры:
--force
: Создаёт класс, даже если запрос уже существует.
Пример:
php artisan make:request StorePostRequest
Запросы формы — классы запросов, содержащие собственную логику валидации и авторизации.
artisan make:resource
Команда make:resource
создаёт новый класс ресурсов.
Использование:
php artisan make:resource <name>
Параметры:
--collection
: Создаёт коллекцию ресурсов.--force
: Создаёт класс, даже если ресурс уже существует.
Пример:
php artisan make:resource UserResource --collection
Ресурсы — это уровни трансформации, расположенные между моделями Eloquent и ответами в JSON формате, которые на самом деле возвращаются пользователям приложения.
artisan make:rule
Команда make:rule
создаёт новое правило валидации.
Использование:
php artisan make:rule <name>
Параметры:
--force
: Создаёт класс, даже если правило уже существует.--implicit
: Генерирует неявное правило.
Пример:
php artisan make:rule Uppercase
С помощью настраиваемых правил валидации можно расширить возможности Laravel по валидации.
artisan make:seeder
Команда make:seeder
создаёт новый класс сидера.
Использование:
php artisan make:seeder <name>
Пример:
php artisan make:seeder UsersTableSeeder
Сидеры помогают заполнить базу данных тестовыми данными.
artisan make:test
Команда make:test
создаёт новый класс теста.
Использование:
php artisan make:test <name>
Параметры:
--force
: Создаёт тест, даже если он уже существует.--unit
: Создаёт модульный тест.--pest
: Создаёт Pest тест.--phpunit
: Создаёт PHPUnit тест.
Пример:
php artisan make:test UserTest --unit
Команда make:test
служит для создания тестовых классов для приложения.
Управление очередью
Управление очередью — важнейшая часть любого серьёзного приложения Laravel. Оно позволяет отложить выполнение трудоёмких задач, делая приложение более отзывчивым. Рассмотрим команды Artisan, помогающие управлять очередями.
artisan queue:clear
Команда queue:clear
удаляет все задания из указанной очереди.
Использование:
php artisan queue:clear [<connection>]
Опции:
--queue[=QUEUE]
: Имя очереди, которую необходимо очистить.--force
: Принудительное выполнение операции в продакшне.
Пример:
php artisan queue:clear redis --queue=emails
Команда queue:clear
удобна, когда нужно начать с чистого листа, возможно, после развёртывания крупного обновления, в результате которого поставленные в очередь задания устарели.
artisan queue:failed
Команда queue:failed
содержит список всех неудачных заданий очереди.
Использование:
php artisan queue:failed
У команды queue:failed
нет каких-либо уникальных опций. Она незаменима для диагностики проблем с заданиями в очереди.
artisan queue:flush
Команда queue:flush
удаляет все неудачные задания очереди.
Использование:
php artisan queue:flush
Параметры:
--hours[=HOURS]
: Количество часов, в течение которых будут храниться данные о неудачном задании.
Пример:
php artisan queue:flush --hours=24
Используйте команду queue:flush
, когда необходимо очистить неудачные задания, возможно, после устранения проблемы, приведшей к их неудаче.
artisan queue:forget
Команда queue:forget
удаляет неудачное задание очереди.
Использование:
php artisan queue:forget <id>
Команда queue:forget
удобна, когда необходимо удалить конкретное неудачное задание, возможно, решённое вручную.
artisan queue:listen
Команда queue:listen
прослушивает указанную очередь.
Использование:
php artisan queue:listen [<connection>]
Параметры:
--delay[=DELAY]
: Количество секунд для задержки неудачных заданий.--force
: Заставляет worker запускаться даже в режиме обслуживания.--memory[=MEMORY]
: Ограничение памяти в мегабайтах.--queue[=QUEUE]
: Очередь для прослушивания.--sleep[=SLEEP]
: Количество секунд для сна, если задание недоступно.--timeout[=TIMEOUT]
: Количество секунд, в течение которых может выполняться дочерний процесс.--tries[=TRIES]
: Количество попыток выполнения задания перед записью в журнал о его неудаче.
Пример:
php artisan queue:listen --queue=high,low --tries=3
Команда queue:listen
запускает длительный процесс, постоянно проверяющий наличие новых заданий в очереди.
artisan queue:restart
Команда queue:restart
перезапускает очередь worker демонов после завершения их текущего задания.
Использование:
php artisan queue:restart
Команда queue:restart
удобна, когда вы развернули новый код и хотите убедиться, что все worker'ы используют последнюю версию.
artisan queue:retry
Команда queue:retry
повторяет неудачное задание очереди.
Использование:
php artisan queue:retry <id>
Параметры:
--range[=RANGE]
: Диапазон ID заданий (числовых) для повторного выполнения.
Пример:
php artisan queue:retry 5
Используйте команда queue:retry
, когда устранили проблему и хотите повторить неудачные задания.
artisan queue:work
Команда queue:work
запускает обработку заданий в очереди в качестве демона.
Использование:
php artisan queue:work [<connection>]
Опции:
--queue[=QUEUE]: Очередь для обработки. --once: Обрабатывает только следующее задание в очереди. --stop-when-empty: Останавливаться, когда очередь пуста. --force: Заставляет worker работать даже в режиме обслуживания. --memory[=MEMORY]: Ограничение памяти в мегабайтах. --sleep[=SLEEP]: Количество секунд для сна, когда задание недоступно. --timeout[=TIMEOUT]: Количество секунд, в течение которых может выполняться дочерний процесс. --tries[=TRIES]: Количество попыток выполнения задания перед записью в журнал о его неудаче.
Пример:
php artisan queue:work redis --queue=high,low --tries=3
Команда queue:work
похожа на queue:listen
, но она более эффективна, поскольку ей не нужно перезагружать фреймворк для каждого задания.
Управление маршрутами
Управление маршрутами — важнейший аспект разработки в Laravel. Эти команды Artisan помогут оптимизировать и отладить маршрутизацию приложения.
artisan route:cache
Команда route:cache
создаёт файл кэша маршрутов для ускорения регистрации маршрутов.
Использование:
php artisan route:cache
У команды route:cache
нет никаких уникальных опций. Она наиболее эффективна в продакшне, так как позволяет значительно ускорить регистрацию маршрутов.
После выполнения команды route:cache
маршруты будут загружаться из одного кэшированного файла, что может повысить производительность. Не забывайте выполнять эту команду после любых изменений в маршрутах!
artisan route:clear
Команда route:clear
удаляет файл кэша маршрутов.
Использование:
php artisan route:clear
У команды route:clear
также нет уникальных опций. Её лучше использовать во время разработки, когда активно изменяются маршруты.
Выполнение команды route:clear
гарантирует, что приложение использует актуальные маршруты, что важно, пока в структуру маршрутизации вносятся изменения.
artisan route:list
Команда route:list
отображает все зарегистрированные в приложении маршруты.
Использование:
php artisan route:list
Параметры:
--json
: Выводит список маршрутов в формате JSON.--method[=METHOD]
: Фильтрует маршруты по методу.--name[=NAME]
: Фильтрует маршруты по имени.--path[=PATH]
: Фильтрует маршруты по пути.--except-path[=EXCEPT-PATH]
: Не выводить маршруты, соответствующие заданному шаблону пути.-r
,--reverse
: Изменяет порядок следования маршрутов.--sort[=SORT]
: Столбец (domain, method, uri, name, action, middleware) для сортировки.
Пример:
php artisan route:list --method=GET --sort=uri
Команда route:list
невероятно удобна для отладки и понимания структуры маршрутизации приложения. Она предоставляет полный обзор всех маршрутов, включая их HTTP-методы, URI, имена и действия контроллера, к которым они привязаны.
Команды управления маршрутами — важные инструменты в инструментарии разработчика Laravel. Они помогут оптимизировать производительность с помощью кэширования маршрутов, обеспечить работу с последними маршрутами во время разработки и предоставить чёткий обзор структуры маршрутизации вашего приложения.
Управление расписанием
Планирование задач в Laravel — мощная функция, позволяющая свободно и выразительно определять планирование команд в самом Laravel. Эти команды Artisan помогут управлять запланированными задачами и взаимодействовать с ними.
artisan schedule:list
Команда schedule:list
выводит список всех запланированных задач.
Использование:
php artisan schedule:list
Параметры:
--timezone[=TIMEZONE]
: Часовой пояс, в котором должно отображаться время.--next
: Сортирует перечисленные задачи по следующей дате выполнения.
Пример:
php artisan schedule:list --timezone=America/New_York
Команда schedule:list
невероятно удобна для получения обзора всех запланированных задач. Она показывает, когда каждая задача должна быть запущена, что облегчает управление и отладку автоматизированных процессов приложения.
artisan schedule:run
Команда schedule:run
запускает запланированные команды.
Использование:
php artisan schedule:run
У команды schedule:run
нет уникальных опций. Обычно она вызывается планировщиком задач сервера (таким как Cron) каждую минуту. При выполнении она определяет, какие задачи должны быть выполнены, и запускает их.
Обычно команду schedule:run
не запускают вручную, но это удобно для тестирования запланированных задач, чтобы убедиться, что они работают так, как нужно.
artisan schedule:work
Команда schedule:work
запускает worker расписания.
Использование:
php artisan schedule:work
Параметры:
--run-output-file[=RUN-OUTPUT-FILE]
: Файл, в который следует направить вывод schedule:run.
Команда schedule:work
запускает длительный процесс, работающий на первом плане и выполняющий запланированные задачи в указанное время. Это альтернатива использованию Cron, который может быть удобен в некоторых средах развёртывания или для локальной разработки.
Управление хранилищем
В Laravel управление хранением данных в основном связано с файловыми системами и тем, как приложение взаимодействует с файлами. Хотя в этой категории есть только одна команда, она важна для настройки доступа к файлам в приложении.
artisan storage:link
Команда storage:link
создаёт символическую ссылку с public/storage
на storage/app/public
.
Использование:
php artisan storage:link
Параметры:
--relative
: Создаёт символическую ссылку, используя относительные пути.--force
: Перезаписывает существующие символические ссылки.
Пример:
php artisan storage:link --force
Команда storage:link
очень важна, если необходимо сделать файлы, хранящиеся в каталоге storage/app/public
, доступными из интернета.
Управление поставщиками
В Laravel управление поставщиками в первую очередь связано с работой со сторонними пакетами и их ресурсами. В этой категории есть одна основная, но мощная команда, которую вы, скорее всего, будете часто использовать при работе с пакетами.
artisan vendor:publish
Команда vendor:publish
публикует все доступные для публикации ресурсы из пакетов поставщика.
Использование:
php artisan vendor:publish
Параметры:
--force
: Перезаписывает все существующие файлы.--all
: Публикует ресурсы для всех сервис провайдеров без запроса.--provider[=PROVIDER]
: Сервис провайдер, у которого есть ресурсы, которые необходимо опубликовать.--tag[=TAG]
: Один или несколько тегов, в которых есть ресурсы, которые необходимо опубликовать.
Пример:
php artisan vendor:publish --provider="Vendor\Package\ServiceProvider"
Команда vendor:publish
имеет ключевое значение при работе с пакетами Laravel. Вот почему она важна:
- Персонализация: Многие пакеты поставляются с файлами конфигурации, представлениями или другими ресурсами, которые вы можете захотеть настроить для своего приложения. Команда
vendor:publish
позволяет опубликовать эти файлы в приложении, где их можно изменить. - Прозрачность: Позволяет увидеть стандартную конфигурацию и ресурсы пакета, что может быть удобно для понимания работы пакета.
- Управление версиями: Публикуя ресурсы пакета, вы можете добавить их в систему контроля версий, обеспечивая согласованность в различных средах.
Распространённые варианты применения:
Публикация файлов конфигурации:
php artisan vendor:publish --tag=config
При этом публикуются все файлы конфигурации из всех пакетов.
Публикация ресурсов для конкретного пакета:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Публикуются все доступные для публикации ресурсы для пакета Laravel Sanctum.
Публикация определённых типов ресурсов:
php artisan vendor:publish --tag=public
Опубликуются все ресурсы, отмеченные тегом
public
, из всех пакетов.
Помните, что после публикации ресурсов, особенно конфигурационных файлов, их следует просмотреть и при необходимости скорректировать в соответствии с потребностями приложения. Кроме того, не забывайте, что обновление пакета может внести изменения в эти файлы, поэтому может понадобиться вручную объединить обновления, если были внесены изменения.
Управление представлениями
Управление представлениями в Laravel включает компиляцию и кэширование шаблонов Blade. Эти команды помогают оптимизировать производительность рендеринга представлений в приложении и очистить кэшированные представления во время разработки.
artisan view:cache
Команда view:cache
компилирует все шаблоны Blade приложения.
Использование:
php artisan view:cache
У команды view:cache
нет уникальных опций. Вот чем она удобна:
- Повышение производительности: Предварительная компиляция всех шаблонов Blade позволяет значительно сократить время рендеринга представлений, особенно при первом запросе.
- Обнаружение ошибок: Он поможет выявить любые ошибки в шаблонах Blade во время развёртывания, а не при первом обращении к ним пользователя.
Обычно команда view:cache
выполняется в процессе развёртывания. Она гарантирует, что все представления будут скомпилированы и готовы к работе, как только новая версия приложения будет запущена.
artisan view:clear
Команда view:clear
очищает все скомпилированные файлы представлений.
Использование:
php artisan view:clear
У команды view:clear
нет уникальных опций. Вот когда её следует использовать:
- Во время разработки: Когда происходит активное изменение представлений, очистка кэша представлений гарантирует, что отображается актуальная версия шаблонов.
- Устранение неполадок: Если в представлениях наблюдается неожиданное поведение, очистка кэша иногда помогает решить проблему.
Помните, что хотя кэширование представлений может значительно повысить производительность в продакшне, во время разработки часто удобнее позволить Laravel компилировать представления по требованию. Таким образом, можно сразу увидеть изменения, не очищая каждый раз в ручную кэш представлений.
На этом заканчивается подробное руководство по командам Artisan в Laravel. Мы рассмотрели широкий спектр команд, от управления приложениями и базами данных до кэширования, очередей и обработки представлений. Artisan — это мощный инструмент, который может значительно упростить рабочий процесс разработки Laravel.
Создание команд Artisan
Хотя Laravel предоставляет множество встроенных команд Artisan, одной из мощных функций является возможность создания собственных команд. Это позволяет автоматизировать задачи, специфичные для вашего приложения.
Шаги создания команды Artisan
Создание файла команды
Используйте команду
artisan make:command
, чтобы создать новый файл команды:php artisan make:command SendEmails
Это создаст новый файл
app/Console/Commands/SendEmails.php
.Определение команды
Откройте только что созданный файл, и увидите базовую структуру:
class SendEmails extends Command
{
protected $signature = 'command:name';
protected $description = 'Command description';
public function handle()
{
//
}
}Определение сигнатуры и описания
Свойство
$signature
определяет, как команда будет вызываться из командной строки. Свойство$description
отображается при запускеphp artisan list
.protected $signature = 'email:send {user}';
protected $description = 'Send emails to a user';Реализация логики команды
Метод
handle()
— это место, куда помещается основная логика команды:public function handle()
{
$userId = $this->argument('user');
$user = User::find($userId);
// Логика отправки email
$this->info("Email sent to {$user->email}!");
}Регистрация команды (необязательно)
Laravel автоматически обнаружит вашу команду, но при необходимости её можно зарегистрировать вручную в
app/Console/Kernel.php
:protected $commands = [
Commands\SendEmails::class,
];
Теперь можно запустить свою команду:
php artisan email:send 1
Дополнительные возможности
- Аргументы и опции: В сигнатуре команды можно определить обязательные аргументы, необязательные аргументы и опции.
- Приглашение для ввода: Используйте такие методы, как
$this->ask()
,$this->secret()
и$this->confirm()
, для получения интерактивного ввода. - Форматирование вывода: Такие методы, как
$this->info()
,$this->error()
и$this->table()
, помогают отформатировать вывод команды.
Собственные команды — отличный способ инкапсулировать сложные задачи или часто используемые операции в своём приложении.
Советы и трюки по командам Artisan
Псевдонимы
Можно создать псевдонимы для часто используемых команд Artisan в ~/.bash_profile
или ~/.zshrc
:
alias pa="php artisan"
alias pamm="php artisan make:model"
alias pamt="php artisan make:test"
Теперь можно использовать pa migrate
вместо php artisan migrate
.
Автозавершение
Laravel Artisan поддерживает автозавершение команд. Чтобы включить его, выполните команду:
php artisan completion bash > /etc/bash_completion.d/artisan
Замените bash
на выбранный вами шелл (например, zsh
).
Цепочка команд
Вы можете соединить несколько команд Artisan с помощью &&
:
php artisan migrate:fresh && php artisan db:seed && php artisan test
Это позволит сбросить базу данных, засеять её и запустить тесты в один приём.
Использование Artisan в коде
Команды Artisan можно вызывать из PHP кода:
Artisan::call('email:send', [
'user' => 1, '--queue' => 'default'
]);
Быстрый вызов режима обслуживания
Вместо того чтобы запоминать все команды режима обслуживания, создайте простую функцию bash:
function maintenance() {
if [ "$1" == "on" ]; then
php artisan down
elif [ "$1" == "off" ]; then
php artisan up
else
echo "Usage: maintenance [on|off]"
fi
}
Теперь можно использовать maintenance on
или maintenance off
.
Заключение
Artisan — это больше, чем просто инструмент командной строки; это мощный союзник в разработке Laravel, способный значительно повысить производительность и оптимизировать рабочий процесс. От миграции баз данных до очередей заданий, от управления кэшем до создания собственных команд — Artisan предоставляет единый интерфейс для взаимодействия с различными аспектами вашего приложения Laravel.
В этом руководстве мы рассмотрели широкий спектр команд Artisan, изучили их использование, возможности и реальное применение. Мы увидели, как Artisan может помочь:
- Управлять приложениями и конфигурациями
- Работать с базами данных и выполнять миграции
- Работать с очередями
- Оптимизировать кеш и маршруты
- Планировать задачи
- И многое другое
Мы также научились расширять возможности Artisan, создавая собственные команды, отвечающие нашим требованиям.
Сила Artisan заключается не только в его встроенной функциональности, но и в расширяемости и в том, насколько хорошо он интегрируется в экосистему Laravel. Освоив Artisan, вы не просто изучаете инструмент, а приобщаетесь к философии элегантной, выразительной разработки Laravel.
По мере того как вы продолжаете свой путь в Laravel, я призываю продолжать изучать Artisan. Экспериментируйте с различными командами, создавайте свои собственные и ищите способы включить Artisan в рабочий процесс разработки. Чем больше будете его использовать, тем больше будете ценить его возможности и эффективность, которую он привносит в процесс разработки.
Помните, что Laravel и Artisan постоянно развиваются. Будьте любознательны, продолжайте учиться и не бойтесь погружаться в документацию Laravel или ресурсы сообщества, чтобы открыть для себя новые возможности и лучшие практики.