Как моя команда может передать необязательные аргументы другой команде Artisan?

(Обновленный вопрос, чтобы показать, что это не похоже на связанные вопросы)

Я написал команду Laravel (полностью показана ниже), которая по сути является оболочкой для Dusk, так что я могу быть уверен, что заранее вызову некоторые другие функции. (В противном случае я неизбежно забуду перезагрузить среду тестирования.)

Он отлично работает, когда я запускаю php artisan mydusk.

namespace App\Console\Commands;

class DuskCommand extends BaseCommand {

    protected $signature = 'mydusk {file?} {--filter=?}';
    protected $description = 'refreshAndSeedTestingDb, then run Dusk suite of tests';

    public function handle() {
        $this->consoleOutput($this->description);
        $resetTestingEnv = new ResetTestingEnv();
        $resetTestingEnv->refreshAndSeedTestingDb();
        $this->consoleOutput('refreshAndSeedTestingDb finished. Now will run Dusk...');
        $file = $this->argument('file');//What to do with this?
        return \Artisan::call('dusk', ['--filter' => $this->option('filter')]);
    }

}

Как видите, я уже прочитал эти документы и понял, как написать $signature для приема необязательных аргументов.

Моя цель - иметь возможность иногда запускать php artisan mydusk, а также иметь возможность необязательно добавлять аргументы, например, когда я могу вызвать что-то вроде php artisan mydusk tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick (который передаст аргументы tests/Browser/MailcheckTest.php --filter testBasicValidCaseButtonClick обычной команде dusk).

Как я могу отредактировать последние 2 строки моей функции handle(), чтобы $file передавался в dusk?

Вы читали инструкцию? Приводятся примеры. laravel.com/docs/5.6/artisan#defining-input-expectations

fubar 02.07.2018 03:55

@fubar Да, я уже читал эти документы. Мне кажется, вы не читали мой вопрос. Во всяком случае, сейчас я его отредактировал, чтобы было понятнее. Спасибо за вашу помощь. :-)

Ryan 02.07.2018 18:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
3
3 139
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы также можете просмотреть эти ссылки, это может вам помочь.

Стек ответа 1

Стек ответа 2

Спасибо, но я уже читал эти ссылки. Мне кажется, вы не читали мой вопрос. Во всяком случае, сейчас я его отредактировал, чтобы было понятнее. Спасибо за вашу помощь. :-)

Ryan 02.07.2018 18:18

Нет проблем, я опубликую, если смогу помочь @Ryan

Sagar Ahuja 03.07.2018 07:59
Ответ принят как подходящий

Я был удивлен, узнав из своих экспериментов, что моя исходная функция действительно работает так, как я хотел, и я могу удалить инертную строку ($file = $this->argument('file');).

Передача аргумента file через \Artisan::call() вообще не кажется необходимой.

Ответ @fubar, похоже, сделал те же ошибочные предположения, что и я.

Как намекнул @Jonas Staudenmeir в комментарии, Laravel\Dusk\Console\DuskCommand использует аргументы из $_SERVER['argv'].

Это работает, потому что Laravel\Dusk\Console\DuskCommand получает аргументы от $_SERVER['argv'].

Jonas Staudenmeir 03.07.2018 03:11

Другие вопросы по теме