توسعه صنعتگر
معرفی
علاوه بر دستورات ارائه شده با 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 ثبت می شود.