نسخه:

توسعه صنعتگر

معرفی

علاوه بر دستورات ارائه شده با Artisan، شما همچنین می توانید دستورات سفارشی خود را برای کار با برنامه خود بسازید. شما می توانید دستورات سفارشی خود را در app/Console/Commands دایرکتوری ذخیره کنید. با این حال، شما آزاد هستید که مکان ذخیره سازی خود را انتخاب کنید تا زمانی که دستورات شما بر اساس composer.json تنظیمات شما به صورت خودکار بارگذاری شوند.

ساخت یک فرمان

تولید کلاس

برای ایجاد یک دستور جدید، می‌توانید از make:console دستور Artisan استفاده کنید، که یک دستور خرد را ایجاد می‌کند تا به شما در شروع کار کمک کند:

یک کلاس فرماندهی جدید ایجاد کنید

php artisan make:console FooCommand

دستور بالا یک کلاس در ایجاد می کند app/Console/Commands/FooCommand.php .

هنگام ایجاد دستور، --command ممکن است از این گزینه برای اختصاص نام فرمان ترمینال استفاده شود:

php artisan make:console AssignUsers --command=users:assign

نوشتن فرمان

name هنگامی که دستور شما تولید شد، باید مشخصات و description ویژگی های کلاس را که هنگام نمایش دستور شما روی صفحه استفاده می شود، پر کنید list .

زمانی که دستور شما اجرا شود متد fire فراخوانی می شود. شما می توانید هر منطق دستوری را در این متد قرار دهید.

استدلال ها و گزینه ها

متدهای getArguments و getOptions جایی هستند که می‌توانید هر آرگومان یا گزینه‌ای را که فرمان دریافت می‌کند تعریف کنید. هر دوی این روش‌ها آرایه‌ای از دستورات را برمی‌گردانند که با فهرستی از گزینه‌های آرایه توصیف می‌شوند.

هنگام تعریف arguments ، مقادیر تعریف آرایه نشان دهنده موارد زیر است:

[$name, $mode, $description, $defaultValue]

استدلال mode ممکن است یکی از موارد زیر باشد: InputArgument::REQUIRED یا InputArgument::OPTIONAL .

هنگام تعریف options ، مقادیر تعریف آرایه نشان دهنده موارد زیر است:

[$name, $shortcut, $mode, $description, $defaultValue]

برای گزینه ها، آرگومان mode ممکن است: InputOption::VALUE_REQUIRED , InputOption::VALUE_OPTIONAL , InputOption::VALUE_IS_ARRAY , InputOption::VALUE_NONE .

حالت VALUE_IS_ARRAY نشان می دهد که سوئیچ ممکن است چندین بار هنگام فراخوانی فرمان استفاده شود:

InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY

سپس این دستور را مجاز می کند:

php artisan foo --option=bar --option=baz

این VALUE_NONE گزینه نشان می دهد که گزینه به سادگی به عنوان یک "سوئیچ" استفاده می شود:

php artisan foo --option

بازیابی ورودی

در حالی که دستور شما در حال اجرا است، بدیهی است که باید به مقادیر آرگومان ها و گزینه های پذیرفته شده توسط برنامه خود دسترسی داشته باشید. برای انجام این کار، می توانید از روش های argument و استفاده کنید option :

بازیابی ارزش آرگومان فرمان

$value = $this->argument('name');

بازیابی همه آرگومان ها

$arguments = $this->argument();

بازیابی ارزش یک گزینه فرمان

$value = $this->option('name');

بازیابی همه گزینه ها

$options = $this->option();

خروجی نوشتن

برای ارسال خروجی به کنسول، می‌توانید از روش‌های info ، comment و question و استفاده کنید error . هر یک از این روش ها از رنگ های ANSI مناسب برای هدف خود استفاده می کنند.

ارسال اطلاعات به کنسول

$this->info('Display this on the screen');

ارسال پیغام خطا به کنسول

$this->error('Something went wrong!');

سوال پرسیدن

همچنین می توانید از روش ask و confirm برای درخواست ورودی از کاربر استفاده کنید:

درخواست ورودی از کاربر

$name = $this->ask('What is your name?');

درخواست ورودی مخفی از کاربر

$password = $this->secret('What is the password?');

درخواست تایید از کاربر

if ($this->confirm('Do you wish to continue? [yes|no]'))
{
//
}

همچنین می‌توانید یک مقدار پیش‌فرض برای confirm متد تعیین کنید، که باید true یا false :

$this->confirm($question, true);

فراخوانی سایر دستورات

گاهی اوقات ممکن است بخواهید دستورات دیگری را از دستور خود فراخوانی کنید. می توانید این کار را با استفاده از call روش زیر انجام دهید:

$this->call('command:name', ['argument' => 'foo', '--option' => 'bar']);

ثبت دستورات

ثبت فرماندهی صنعتگر

هنگامی که دستور شما به پایان رسید، باید آن را در Artisan ثبت کنید تا برای استفاده در دسترس باشد. این معمولا در app/Console/Kernel.php فایل انجام می شود. در این فایل، لیستی از دستورات موجود در commands ویژگی را خواهید دید. برای ثبت دستور خود کافی است آن را به این لیست اضافه کنید.

protected $commands = [
'App\Console\Commands\FooCommand'
];

هنگامی که Artisan بوت می شود، تمام دستورات لیست شده در این ویژگی توسط کانتینر سرویس حل شده و در Artisan ثبت می شود.