عنوان مقاله :

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

گردآوری و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 22 شهریور 1396
دسته بندی ها : لاراول

لاراول به همراه تعدادی دستور 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 [قسمت اول]

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

آموزش ساخت یک وبلاگ ساده با لاراول 5 [قسمت دوم]

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

آموزش ساخت یک وبلاگ ساده با لاراول 5 [قسمت سوم]

مسیریابی ، نقش اساسی در عملکرد هسته هر فریم ورک MVC ایفا میکنه . در حقیقت Route یه نگاشت بین موتور requests و response اگه بخوایم خیلی ساده تعریفش کنی...

آموزش Migration ها در لاراول

لاراول توسط Taylor Otwell توسعه پیدا کرده و یکی از بزرگترین فریمورک های php می باشد و هم برای پروژه ای کوچیک و هم برای پروژه های در مقیاس بزرگ قابل اس...

دیدگاه های ارزشمند شما

برای ارسال نظر لازم است ابتدا وارد سایت شوید
هیچ دیدگاهی تا به این لحظه برای این موضوع ثبت نشده است