اگر با Laravel کار کرده باشید، احتمالاً بارها با دستورهایی مانند:
php artisan serve
یا:
php artisan make:controller ProductController
مواجه شدهاید.
این دستورات بخشی از ابزار قدرتمندی به نام Laravel Artisan هستند.
Artisan رابط خط فرمان Laravel است و به توسعهدهنده اجازه میدهد بسیاری از کارهای روزمره پروژه را با چند دستور انجام دهد؛ از ایجاد Controller و Model گرفته تا اجرای Migration، مدیریت Cache، مشاهده Routeها و اجرای دستورات اختصاصی.
در این مقاله ابتدا بررسی میکنیم Artisan چیست، سپس ساختار دستورات آن را میشناسیم و در ادامه مهمترین دستورهای Artisan را با مثال بررسی خواهیم کرد.
# Artisan چیست؟
Artisan ابزار Command Line Interface یا CLI فریمورک Laravel است.
این ابزار در ریشه پروژه Laravel قرار دارد و از طریق فایل:
artisan
در اختیار شماست.
برای اجرای Artisan معمولاً از دستور زیر استفاده میکنیم:
php artisan
اگر این دستور را در ترمینال و داخل پوشه پروژه Laravel اجرا کنید، فهرستی از دستورات قابل استفاده نمایش داده میشود.
به زبان ساده، Artisan مثل یک جعبهابزار برای مدیریت پروژه Laravel از طریق ترمینال است.
# Artisan چه کاربردی دارد؟
Artisan در بخشهای مختلف توسعه Laravel استفاده میشود.
برای مثال با Artisan میتوانید:
- پروژه را در محیط توسعه اجرا کنید.
- Controller ایجاد کنید.
- Model ایجاد کنید.
- Migration بسازید.
- Seeder ایجاد کنید.
- Middleware بسازید.
- Form Request ایجاد کنید.
- Routeهای پروژه را مشاهده کنید.
- Cache را پاک یا مدیریت کنید.
- Configuration را Cache کنید.
- Queueها را مدیریت کنید.
- تستها را اجرا کنید.
- Command اختصاصی بسازید.
- اطلاعات محیط Laravel را بررسی کنید.
بنابراین Artisan فقط یک ابزار برای اجرای سرور توسعه نیست.
بلکه یکی از ابزارهای اصلی کار روزمره توسعهدهنده Laravel محسوب میشود.
# چگونه Artisan را اجرا کنیم؟
ابتدا باید وارد پوشه پروژه Laravel شوید.
برای مثال:
cd laravel-blog
سپس:
php artisan
را اجرا کنید.
اگر Laravel و PHP بهدرستی نصب شده باشند، فهرستی از دستورات نمایش داده میشود.
برای مشاهده اطلاعات کلی Artisan نیز میتوانید از:
php artisan list
استفاده کنید.
# ساختار دستورهای Artisan
بسیاری از دستورات Artisan ساختار مشابهی دارند:
php artisan command
یا:
php artisan make:controller ProductController
در این مثال:
php
مفسر PHP است.
artisan
فایل Artisan پروژه است.
make:controller
نام دستور است.
و:
ProductController
آرگومان دستور محسوب میشود.
# مشاهده فهرست دستورات Artisan
برای مشاهده تمام دستورات موجود میتوانید اجرا کنید:
php artisan list
این دستور فهرست دستورهای موجود را نمایش میدهد.
بهدلیل تعداد زیاد دستورات، ممکن است خروجی طولانی باشد.
دستورات Artisan معمولاً بر اساس Namespace یا دستهبندی مشخصی مرتب میشوند.
مثلاً:
make
migrate
route
cache
config
queue
storage
schedule
# مشاهده راهنمای یک دستور
یکی از قابلیتهای بسیار کاربردی Artisan، مشاهده Help مربوط به هر دستور است.
مثلاً:
php artisan make:controller --help
یا:
php artisan migrate --help
این دستور معمولاً اطلاعاتی مانند:
- کاربرد دستور
- آرگومانها
- Optionها
- نحوه استفاده
را نمایش میدهد.
این قابلیت بسیار مهم است، چون لازم نیست تمام Optionهای Artisan را حفظ کنید.
# اجرای پروژه با Artisan
در محیط توسعه میتوانیم از Artisan برای اجرای سرور Laravel استفاده کنیم:
php artisan serve
بعد از اجرای دستور، Laravel یک سرور توسعه در اختیار شما قرار میدهد.
معمولاً میتوانید آدرس نمایشدادهشده در ترمینال را در مرورگر باز کنید.
مثلاً:
http://127.0.0.1:8000
این روش برای توسعه و تست محلی بسیار کاربردی است.
# ساخت Controller با Artisan
یکی از پرکاربردترین قابلیتهای Artisan، ایجاد فایلهای Laravel است.
برای ساخت Controller:
php artisan make:controller ProductController
Laravel فایل Controller را در ساختار مناسب پروژه ایجاد میکند.
معمولاً فایل ایجادشده در مسیر:
app/Http/Controllers/ProductController.php
قرار میگیرد.
ساخت Resource Controller
اگر قصد دارید Controller مربوط به عملیات CRUD ایجاد کنید، میتوانید از Resource Controller استفاده کنید:
php artisan make:controller ProductController --resource
این دستور متدهای استاندارد مربوط به عملیات CRUD را در Controller ایجاد میکند.
مانند:
index
create
store
show
edit
update
destroy
این قابلیت زمانی که در حال ساخت سیستمهایی مانند مدیریت محصولات، سفارشها یا کاربران هستید بسیار کاربردی است.
# ساخت Model با Artisan
برای ایجاد Model میتوانید از:
php artisan make:model Product
استفاده کنید.
فایل Model معمولاً در:
app/Models/Product.php
قرار میگیرد.
مثلاً:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
//
}
# ساخت Model همراه با Migration
یکی از قابلیتهای مفید Artisan این است که میتوانید چند فایل مرتبط را با یک دستور ایجاد کنید.
مثلاً:
php artisan make:model Product -m
در این حالت علاوه بر Model، یک Migration نیز ایجاد میشود.
به این ترتیب برای ساخت یک موجودیت جدید، مجبور نیستید هر فایل را بهصورت جداگانه ایجاد کنید.
# ساخت Model همراه با Migration، Factory و Seeder
در پروژههای بزرگتر ممکن است بخواهید Model و فایلهای مرتبط بیشتری ایجاد کنید.
مثلاً:
php artisan make:model Product -mfs
این دستور میتواند Model را همراه با:
- Migration
- Factory
- Seeder
ایجاد کند.
یکی از مزیتهای Artisan همین امکان تولید سریع فایلهای استاندارد پروژه است.
# ساخت Migration با Artisan
برای ایجاد Migration:
php artisan make:migration create_products_table
Laravel فایل Migration را در:
database/migrations/
ایجاد میکند.
برای مثال میتوانید بعداً ساختار جدول را در آن تعریف کنید:
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price', 12, 2);
$table->timestamps();
});
# اجرای Migration
بعد از ایجاد Migration، برای اجرای Migrationهای اجرا نشده میتوانید از:
php artisan migrate
استفاده کنید.
این دستور ساختار تعریفشده در Migrationها را روی دیتابیس اعمال میکند.
# بازگردانی آخرین Migration
اگر بخواهید آخرین Batch از Migrationها را برگردانید، میتوانید از:
php artisan migrate:rollback
استفاده کنید.
این دستور برای زمانی مفید است که مثلاً یک تغییر دیتابیس را آزمایش کردهاید و میخواهید آن را برگردانید.
# مشاهده وضعیت Migrationها
برای مشاهده وضعیت Migrationها:
php artisan migrate:status
این دستور نشان میدهد کدام Migrationها اجرا شدهاند و کدامیک هنوز اجرا نشدهاند.
# ساخت Seeder
برای ایجاد Seeder:
php artisan make:seeder ProductSeeder
Seeder در مسیر مربوط به:
database/seeders/
ایجاد میشود.
Seederها برای وارد کردن دادههای اولیه یا آزمایشی به دیتابیس کاربرد دارند.
# اجرای Seeder
برای اجرای Seeder میتوانید از:
php artisan db:seed
استفاده کنید.
همچنین میتوان Seeder مشخصی را اجرا کرد.
مثلاً:
php artisan db:seed --class=ProductSeeder
# ساخت Factory
برای ایجاد Factory:
php artisan make:factory ProductFactory
Factory برای تولید دادههای آزمایشی کاربرد دارد.
برای مثال اگر بخواهید صدها محصول آزمایشی برای تست فروشگاه ایجاد کنید، Factory میتواند بسیار مفید باشد.
# ساخت Middleware
برای ایجاد Middleware:
php artisan make:middleware CheckUserStatus
فایل Middleware در ساختار مناسب پروژه ایجاد میشود.
Middleware میتواند برای مواردی مانند:
- بررسی ورود کاربر
- کنترل دسترسی
- بررسی وضعیت حساب
- محدود کردن درخواستها
- بررسی شرایط خاص درخواست
استفاده شود.
# ساخت Form Request
برای ایجاد Form Request:
php artisan make:request StoreProductRequest
این قابلیت برای جدا کردن منطق Validation از Controller بسیار مفید است.
برای مثال میتوانید قوانین اعتبارسنجی محصول را در:
StoreProductRequest
قرار دهید.
# ساخت Job
برای ایجاد Job:
php artisan make:job ProcessOrder
Jobها در پروژههایی که پردازشهای پسزمینه دارند اهمیت زیادی پیدا میکنند.
برای مثال:
- ارسال ایمیل
- پردازش فایل
- ارسال اعلان
- پردازش سفارش
- ارتباط با سرویس خارجی
میتواند بهصورت Job انجام شود.
# ساخت Event
برای ایجاد Event:
php artisan make:event OrderCreated
Event میتواند نشاندهنده وقوع یک اتفاق در برنامه باشد.
مثلاً:
سفارش ایجاد شد
سپس Listenerهای مختلف میتوانند به این اتفاق واکنش نشان دهند.
# ساخت Listener
برای ساخت Listener:
php artisan make:listener SendOrderNotification
Listener میتواند مسئول انجام یک عملیات در واکنش به Event باشد.
این ساختار در پروژههای بزرگ کمک میکند اجزای مختلف سیستم بیش از حد به یکدیگر وابسته نشوند.
# ساخت Notification
برای ایجاد Notification:
php artisan make:notification OrderCreatedNotification
Notificationها برای ارسال اعلان به روشهای مختلف کاربرد دارند.
برای مثال:
- Notification داخلی
- کانالهای دیگر
بسته به ساختار پروژه قابل استفاده هستند.
# مشاهده Routeهای پروژه
یکی از دستورات بسیار کاربردی Artisan:
php artisan route:list
است.
این دستور Routeهای ثبتشده پروژه را نمایش میدهد.
برای مثال ممکن است چیزی شبیه این مشاهده کنید:
GET|HEAD /
GET|HEAD products
POST products
GET|HEAD products/{product}
این دستور هنگام Debug کردن Routeها بسیار مفید است.
مثلاً اگر Route موردنظر شما کار نمیکند، اولین کارهایی که میتوانید انجام دهید بررسی:
php artisan route:list
است.
# فیلتر کردن Routeها
در پروژههای بزرگ تعداد Routeها ممکن است زیاد شود.
در چنین شرایطی میتوانید از قابلیتهای فیلتر کردن خروجی دستور استفاده کنید.
این کار کمک میکند فقط Routeهای مرتبط با بخش موردنظر خود را بررسی کنید.
# پاک کردن Cache در Laravel
Laravel برای بخشهای مختلف برنامه Cache دارد.
یکی از دستورات کاربردی:
php artisan cache:clear
است.
این دستور Cache برنامه را پاک میکند.
البته باید توجه کنید که هر نوع Cache در Laravel دقیقاً یک کاربرد ندارد و برای بخشهای مختلف دستورات مدیریتی جداگانهای نیز وجود دارد.
# پاک کردن Configuration Cache
اگر تنظیمات پروژه Cache شده باشند، میتوانید از:
php artisan config:clear
استفاده کنید.
این دستور Configuration Cache را پاک میکند.
این موضوع مخصوصاً هنگام تغییر تنظیمات .env در محیط توسعه میتواند اهمیت داشته باشد.
# Cache کردن Configuration
برای Cache کردن Configuration میتوان از:
php artisan config:cache
استفاده کرد.
این کار بیشتر در محیطهای Production کاربرد دارد و باعث میشود Laravel تنظیمات را به شکل Cacheشده در اختیار داشته باشد.
در محیط توسعه باید بدانید که بعد از تغییر بعضی تنظیمات ممکن است نیاز به پاک یا بازسازی Cache داشته باشید.
# پاک کردن Route Cache
برای پاک کردن Route Cache:
php artisan route:clear
و برای Cache کردن Routeها:
php artisan route:cache
استفاده میشود.
این دستورات بیشتر در فرآیند مدیریت و Deploy پروژههای Laravel کاربرد پیدا میکنند.
# پاک کردن View Cache
برای پاک کردن Viewهای Cacheشده:
php artisan view:clear
میتوانید استفاده کنید.
اگر هنگام توسعه تغییراتی در Viewها ایجاد کردهاید و رفتار غیرمنتظرهای مشاهده میکنید، بررسی Cache یکی از مواردی است که باید در نظر گرفته شود.
# پاک کردن تمام Cacheهای بهینهسازیشده
یکی از دستورات مفید برای پاک کردن Cacheهای مختلف:
php artisan optimize:clear
است.
این دستور در شرایطی که میخواهید Cacheهای مرتبط با بهینهسازی Laravel را پاک کنید، بسیار کاربردی است.
# اجرای Queue Worker
اگر پروژه شما از Queue استفاده کند، Worker را میتوان با Artisan اجرا کرد:
php artisan queue:work
Worker وظیفه پردازش Jobهای موجود در Queue را بر عهده دارد.
برای مثال اگر یک ایمیل را به Queue ارسال کرده باشید، Worker میتواند Job مربوط به ارسال آن را پردازش کند.
# اجرای Scheduler
Laravel قابلیت Task Scheduling نیز دارد.
برای اجرای Scheduler میتوان از:
php artisan schedule:run
استفاده کرد.
در محیط Production معمولاً این دستور باید طبق روش مناسب محیط سرور بهصورت دورهای اجرا شود تا Taskهای زمانبندیشده بررسی و اجرا شوند.
موضوع Task Scheduling در ادامه Cluster بهصورت جداگانه بررسی خواهد شد.
# مشاهده اطلاعات محیط Laravel
برای مشاهده اطلاعات مربوط به محیط Laravel میتوانید از:
php artisan about
استفاده کنید.
این دستور میتواند اطلاعات مفیدی درباره وضعیت و بخشهای مختلف برنامه ارائه دهد.
هنگام بررسی یک پروژه یا عیبیابی، چنین اطلاعاتی میتواند دید مناسبی از محیط پروژه ایجاد کند.
# ساخت Command اختصاصی در Laravel
یکی از قابلیتهای مهم Artisan این است که فقط به دستورات آماده Laravel محدود نیستید.
میتوانید Command اختصاصی خودتان را نیز بسازید.
برای مثال:
php artisan make:command SendDailyReport
Laravel یک Command برای شما ایجاد میکند.
بعد میتوانید دستور اختصاصی خود را طوری طراحی کنید که عملیات موردنظر را انجام دهد.
مثلاً:
php artisan report:daily
در پروژههای واقعی این قابلیت بسیار مهم است.
فرض کنید یک سیستم فروشگاهی دارید و میخواهید هر روز گزارش فروش ایجاد کنید.
میتوانید یک Command اختصاصی برای آن ایجاد کنید.
# Artisan در پروژههای واقعی چه کاربردی دارد؟
Artisan فقط برای آموزش و پروژههای کوچک نیست.
در پروژههای واقعی نیز مرتباً از آن استفاده میشود.
مثلاً در یک پروژه فروشگاهی ممکن است توسعهدهنده از Artisan برای:
ساخت Model
ساخت Controller
ساخت Request
ساخت Migration
ساخت Factory
ساخت Seeder
اجرای Migration
اجرای Queue
پاک کردن Cache
بررسی Routeها
اجرای Commandهای اختصاصی
استفاده کند.
به همین دلیل تسلط بر Artisan باعث افزایش سرعت توسعه Laravel میشود.
# چند دستور مهم Artisan که باید بلد باشید
جدول زیر مجموعهای از دستورات پرکاربرد را خلاصه میکند:
| دستور | کاربرد |
|---|---|
php artisan | نمایش راهنمای کلی |
php artisan list | نمایش فهرست دستورات |
php artisan --help | نمایش Help |
php artisan serve | اجرای سرور توسعه |
php artisan make:controller | ساخت Controller |
php artisan make:model | ساخت Model |
php artisan make:migration | ساخت Migration |
php artisan make:seeder | ساخت Seeder |
php artisan make:factory | ساخت Factory |
php artisan make:middleware | ساخت Middleware |
php artisan make:request | ساخت Form Request |
php artisan make:job | ساخت Job |
php artisan make:event | ساخت Event |
php artisan make:listener | ساخت Listener |
php artisan make:notification | ساخت Notification |
php artisan route:list | نمایش Routeها |
php artisan migrate | اجرای Migrationها |
php artisan migrate:rollback | بازگردانی Migration |
php artisan migrate:status | نمایش وضعیت Migration |
php artisan db:seed | اجرای Seeder |
php artisan cache:clear | پاک کردن Cache |
php artisan config:clear | پاک کردن Configuration Cache |
php artisan route:clear | پاک کردن Route Cache |
php artisan view:clear | پاک کردن View Cache |
php artisan optimize:clear | پاک کردن Cacheهای بهینهسازی |
php artisan queue:work | اجرای Queue Worker |
php artisan schedule:run | اجرای Scheduler |
php artisan about | نمایش اطلاعات پروژه |
# یک سناریوی واقعی استفاده از Artisan
فرض کنیم میخواهیم بخش محصولات یک فروشگاه را ایجاد کنیم.
ابتدا Model و Migration:
php artisan make:model Product -m
سپس Controller:
php artisan make:controller ProductController --resource
بعد Form Request:
php artisan make:request StoreProductRequest
سپس Migration را اجرا میکنیم:
php artisan migrate
بعد Routeها را بررسی میکنیم:
php artisan route:list
در صورت نیاز میتوانیم Cacheهای پروژه را نیز مدیریت کنیم.
به این ترتیب بخش قابل توجهی از ساختار اولیه قابلیت را فقط با چند دستور ایجاد کردهایم.
# آیا لازم است تمام دستورات Artisan را حفظ کنیم؟
خیر.
تعداد دستورات Artisan در یک پروژه واقعی میتواند زیاد باشد و حتی با نصب Packageهای مختلف، دستورات جدیدی به آن اضافه شود.
بهتر است ابتدا دستورات پرکاربرد را یاد بگیرید و برای بقیه موارد از:
php artisan list
و:
php artisan command --help
استفاده کنید.
یک توسعهدهنده حرفهای لزوماً تمام دستورات را از حفظ نمینویسد؛ مهمتر از حفظ کردن، شناخت ابزار و توانایی پیدا کردن دستور مناسب است.
# نکات مهم هنگام کار با Artisan
۱. دستور را داخل پروژه اجرا کنید
باید ترمینال را در ریشه پروژه Laravel باز کنید؛ یعنی جایی که فایل:
artisan
قرار دارد.
۲. PHP باید در دسترس باشد
اگر دستور:
php artisan
اجرا نمیشود، ابتدا بررسی کنید PHP روی سیستم نصب و در PATH قرار گرفته باشد.
۳. خطاهای Artisan را نادیده نگیرید
اگر Artisan خطایی مانند:
Could not open input file: artisan
نمایش دهد، احتمال دارد در پوشه اشتباه قرار داشته باشید.
ابتدا فایلهای پوشه فعلی را بررسی کنید و مطمئن شوید فایل artisan در همان مسیر وجود دارد.
۴. در Production با احتیاط Cache را تغییر دهید
دستورات مربوط به Cache، Configuration و Route در محیط Production باید با شناخت وضعیت پروژه اجرا شوند.
بهخصوص در پروژههایی که Deployment و Queue و چند Worker دارند، بهتر است فرآیند بهصورت کنترلشده انجام شود.
# جمعبندی
Artisan چیست؟
Artisan ابزار خط فرمان Laravel است که برای مدیریت و توسعه پروژه Laravel استفاده میشود.
با Artisan میتوانید بسیاری از کارهای روزمره را سریعتر انجام دهید؛ از ایجاد فایلهای استاندارد گرفته تا اجرای Migration، مدیریت Cache، مشاهده Routeها، اجرای Queue و ساخت Commandهای اختصاصی.
مهمترین دستوری که باید از ابتدا با آن آشنا باشید:
php artisan
است.
بعد از آن، این دستورات جزو ابزارهای بسیار کاربردی شما خواهند بود:
php artisan make:controller
php artisan make:model
php artisan make:migration
php artisan migrate
php artisan route:list
php artisan cache:clear
php artisan optimize:clear
هرچه پروژه Laravel شما بزرگتر شود، اهمیت Artisan نیز بیشتر مشخص خواهد شد.
در مقاله بعدی این مسیر، به سراغ یکی از مهمترین بخشهای Laravel یعنی Route میرویم و بررسی میکنیم درخواست کاربر چگونه به یک مسیر، Controller و Response متصل میشود.
# سوالات متداول Artisan در Laravel
Artisan در Laravel چیست؟
Artisan ابزار خط فرمان Laravel است که برای اجرای دستورات مختلف و مدیریت بخشهای گوناگون پروژه استفاده میشود.
دستور اجرای Artisan چیست؟
برای اجرای Artisan باید در ریشه پروژه Laravel دستور زیر را اجرا کنید:
php artisan
چگونه Controller بسازیم؟
از دستور زیر استفاده کنید:
php artisan make:controller ProductController
چگونه Model بسازیم؟
php artisan make:model Product
چگونه Migration بسازیم؟
php artisan make:migration create_products_table
چگونه Routeهای Laravel را ببینیم؟
php artisan route:list
چگونه Cache Laravel را پاک کنیم؟
برای Cache عمومی میتوانید از:
php artisan cache:clear
استفاده کنید و برای پاکسازی Cacheهای مختلف بهصورت یکجا:
php artisan optimize:clear
کاربرد دارد.
آیا میتوان دستور اختصاصی برای Laravel ساخت؟
بله. میتوانید با:
php artisan make:command MyCommand
یک Command اختصاصی ایجاد کنید و منطق موردنیاز خود را داخل آن قرار دهید.
آیا باید همه دستورات Artisan را حفظ کنیم؟
خیر. دستورات پرکاربرد را یاد بگیرید و برای پیدا کردن بقیه دستورات از php artisan list و گزینه --help استفاده کنید.





