نسخه:

توسعه صنعتگر

معرفی

علاوه بر دستورات ارائه شده با 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'));