آموزش ساخت دستور سفارشی artisan در لاراول
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 3 دقیقه

آموزش ساخت دستور سفارشی artisan در لاراول

لاراول به همراه تعدادی دستور artisan آمده که ما در بخش های مختلف پروژه ازشون استفاده می کنیم. بعضی از اونها معمول ترند مثل make:controller برای ساخت کنترلر و make:model برای ساخت یک مدل و خیلی ها مثل این. اما ممکنه شما به دستورات بیشتری نیاز داشته باشید که باعث صرفه جویی در وقتتون می شوند.

این آموزش بر اساس ورژن 5.2 لاراول هست.

در معماری MVC ممکنه فعالیت های بیشتری از دریافت یک درخواست ساده, ساخت عملیات های دیتابیس و پاس دادن نتایج به view , وجود داشته باشد. این یعنی ممکنه اونها قواعد پیچیده تری باشند که نتوانند در مدل شامل شوند. بنابراین کاری که ما انجام می دهیم ساخت یک پوشه Services و نگه داری از تمام قواعد پیچیده در اونجا, برای ماژول های مختلفمون هست.

ساخت یک دستور کنسول

php artisan make:console Service

ما از دستور artisan بالا برای ساخت یک دستور Service جدید استفاده می کنیم. این یک فایل Service.php در مسیر app/Console/Commands خواهد ساخت, به همراه تعدادی محتوای پیشفرض است که ما باید با توجه به نیازمون اونها رو تغییر بدهیم.

تنظیم امضا و توضیحات دستور

protected $signature = 'make:service {file}';

protected $description = 'Create a new service class';

امضای دستور درواقع چیزی هست که کاربر باید تایپ کنه, مثل make:model و توضیحات یک دستور وظیفه ی دستور رو بیان می کنه. امضای بالا یک argument اجباری به نام file داره که کاربر باید پاس بده. در این مورد این نام فایل و نام کلاس خواهد شد. اگر اون پاس داده نشه پیام خطای زیر نمایش داده خواهد شد :

Not enough arguments (missing: "file").

آگاه کردن Artisan درباره ی دستور جدید

در مسیر app/Console یک فایل بنام Kernel.php وجود دارد. ما باید کلاس مون رو به آرایه ی commands$ اضافه کنیم, پس باید جیزی شبیه زیر بشه :

protected $commands = [

Commands\Service::class,

];

حالا اگر به ترمینال بروید و دستور php artisan رو بزنید شما دستور جدید رو زیر make پیدا می کنید :

make:service   Create a new service class

پس ما دستور جدید رو اضافه کردیم و حالا وظیفه ی دستور رو تعریف می کنیم. از اونجا که ما یک مسیر و یک فایل داخلش می سازیم, باید File رو در فایل Service.php وارد کنیم :

use File;

تابع handle وقتی اجرا میشه که فردی دستور جدید رو اجرا کنه. اول از همه ما چک می کنیم که مسیر وجود داره یا خیر. اگر نه ما اون رو می سازیم. 

$file_path = app_path('Services');

if (!File::exists($file_path)) {

File::makeDirectory($file_path);

}

کد بالا یک مسیر Services داخل مسیر app میسازه, البته اگر وجود نداشته باشه. حالا ما argument دستور رو که توسط کاربر پاس داده شده می گیریم و اسم فایل و کلاس رو تنظیم می کنیم. ما همچنین محتوای فایل رو که شامل namespace و نام کلاس هست وارد می کنیم :

// Set the file name and content

$file_name = $this->argument('file') . '.php';

$file_content = "<?php" . "\n" . "namespace App\Services;" . "\n\n" . "class " . $this->argument('file') . "\n" .

"{}";


// Create the file with content in the above directory

File::put($file_path . '/' . $file_name, $file_content);

حالا به کاربر پیامی رو نشون میدیم که شامل نتیجه عملیات هست :

// Show message to the user

$this->info('Service file ' . $file_name . ' created successfully in ' . $file_path);

حالا کار ساخت دستور تمام شد به ترمینال رفته و دستور زیر اجرا کنید :

php artisan make:service BusinessService

مشاهده خواهید کرد فایل BusinessService.php در مسیر app/Services ساخته میشود.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 1 رای

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید