توسعه صنعتگر
معرفی
علاوه بر دستورات ارائه شده با Artisan، شما همچنین می توانید دستورات
سفارشی خود را برای کار با برنامه خود بسازید.
شما می توانید دستورات سفارشی خود را در
app/commands
دایرکتوری ذخیره کنید.
با این حال، شما آزاد هستید که مکان ذخیره سازی خود را انتخاب کنید تا زمانی
که دستورات شما بر اساس
composer.json
تنظیمات شما به صورت خودکار بارگذاری شوند.
ساخت یک فرمان
تولید کلاس
برای ایجاد یک دستور جدید، میتوانید از
command:make
دستور Artisan استفاده کنید، که یک دستور خرد را ایجاد میکند تا به شما در
شروع کار کمک کند:
یک کلاس فرماندهی جدید ایجاد کنید
php artisan command:make FooCommand
به طور پیش فرض، دستورات تولید شده در دایرکتوری ذخیره می شوند
app/commands
.
با این حال، می توانید مسیر یا فضای نام سفارشی را مشخص کنید:
php artisan command:make FooCommand --path=app/classes --namespace=Classes
هنگام ایجاد دستور،
--command
ممکن است از این گزینه برای اختصاص نام فرمان ترمینال استفاده شود:
php artisan command:make AssignUsers --command=users:assign
نوشتن فرمان
name
هنگامی که دستور شما تولید شد، باید مشخصات و
description
ویژگی های کلاس را که هنگام نمایش دستور شما روی صفحه استفاده می شود،
پر کنید
list
.
زمانی که دستور شما اجرا شود متد
fire
فراخوانی می شود.
شما می توانید هر منطق دستوری را در این متد قرار دهید.
استدلال ها و گزینه ها
متدهای
getArguments
و
getOptions
جایی هستند که میتوانید هر آرگومان یا گزینهای را که فرمان دریافت میکند
تعریف کنید.
هر دوی این روشها آرایهای از دستورات را برمیگردانند که با فهرستی از
گزینههای آرایه توصیف میشوند.
هنگام تعریف
arguments
، مقادیر تعریف آرایه نشان دهنده موارد زیر است:
array($name, $mode, $description, $defaultValue)
استدلال
mode
ممکن است یکی از موارد زیر باشد:
InputArgument::REQUIRED
یا
InputArgument::OPTIONAL
.
هنگام تعریف
options
، مقادیر تعریف آرایه نشان دهنده موارد زیر است:
array($name, $shortcut, $mode, $description, $defaultValue)
برای گزینه ها، آرگومان
mode
ممکن است:
InputOption::VALUE_REQUIRED
,
InputOption::VALUE_OPTIONAL
,
InputOption::VALUE_IS_ARRAY
,
InputOption::VALUE_NONE
.
حالت
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);
ثبت دستورات
ثبت فرماندهی صنعتگر
هنگامی که دستور شما به پایان رسید، باید آن را در Artisan ثبت کنید تا برای
استفاده در دسترس باشد.
این معمولا در
app/start/artisan.php
فایل انجام می شود.
در این فایل، می توانید از
Artisan::add
روش برای ثبت دستور استفاده کنید:
Artisan::add(new CustomCommand);
ثبت دستوری که در کانتینر IoC است
اگر دستور شما در کانتینر IoC
برنامه ثبت شده است
، می توانید از
Artisan::resolve
روشی برای در دسترس قرار دادن آن برای Artisan استفاده کنید:
Artisan::resolve('binding.name');
ثبت دستورات در یک ارائه دهنده خدمات
اگر نیاز به ثبت دستورات از داخل یک ارائهدهنده خدمات دارید، باید متد را
از
متد
commands
ارائهدهنده فراخوانی کنید و
کانتینر IoC را
برای دستور ارسال کنید:
boot
public function boot(){ $this->commands('command.binding');}
فراخوانی سایر دستورات
گاهی اوقات ممکن است بخواهید دستورات دیگری را از دستور خود فراخوانی کنید.
می توانید این کار را با استفاده از
call
روش زیر انجام دهید:
$this->call('command:name', array('argument' => 'foo', '--option' => 'bar'));