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 EnsureUserIsSubscribedMiddleware имеет решающее значение для фильтрации 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 или ресурсы сообщества, чтобы открыть для себя новые возможности и лучшие практики.