چرا لاراول یک انتخاب عالی برای MVP است

آفلاین
user-avatar
عرفان حشمتی
25 فروردین 1400, خواندن در 11 دقیقه

در طی چند سال گذشته، من در ایجاد چندین پروژه استارتاپی شرکت کردم و همه آنها شامل ساخت سریع‌ترین محصول MVP بودند. کار روی پروژه‌های مختلف به این معنی بود که من با فناوری‌های مختلفی کار کردم از جمله Ruby on Rails ، NodeJS و CodeIgniter. همه این فناوری‌ها عالی هستند و در نهایت پروژه را به پایان می‌رسانند، اما من همیشه احساس می‌کردم کارهای اساسی خیلی راحت‌تر انجام می‌شود و باید چیزی پیدا کنم که به من اجازه دهد سریع‌تر نمونه اولیه را تحویل دهم. لاراول یک فریمورک PHP می‌باشد و به گونه ای طراحی شده است که باعث می‌شود توسعه دهنده در ساخت هسته اصلی محصول تمرکز کند. تنها یک فریمورک PHP برای من کاملا مناسب بود؛ زیرا قبلا تجربه زیادی با این زبان داشتم اما این زبان اصلی من برای پروژه هایم نبود. همه اینها با لاراول تغییر کرد. من قصد دارم چندین دلیل اصلی را توضیح دهم که چرا باید هنگام ساخت یک برنامه وب MVP فریمورک لاراول را در نظر گرفت.

احراز هویت کاربر از پیش تعریف شده است

لاراول با احراز هویت کاربر از قبل پیکربندی شده همراه است. این ویژگی مناسب برای شرایطی است که شما فقط می‌خواهید ایده‌ای را تست کنید و روزها به کدنویسی سیستم احراز هویت نپردازید. این بدان معنی است که شما تمام ویژگی‌های اساسی احراز هویت را در اختیار دارید. اعم از ثبت نام کاربر، ورود به سیستم، تأیید ایمیل، بازیابی رمزعبور و موارد دیگر.

در حال حاضر حفظ جزئیات مربوط به کاربر وارد شده در PHP کلاسیک دشوار است. با استفاده از لاراول می‌توانید به جزئیات مربوط به کاربر فعلی در هر کجای برنامه خود دسترسی داشته باشید، به همین سادگی:

$user = Auth::user();

لاراول همچنین بسته Socialite را ارائه می‌دهد که به شما امکان استفاده از شبکه‌های اجتماعی مختلف نظیر فیسبوک، تویتر، گیت هاب، گوگل و ... را داده تا بتوانید از طریق آنها احراز هویت کاربران را انجام دهید.

مسیریابی ساده

روشی که لاراول با آن از پس مسیریابی برمی‌آید بسیار ساده است. می‌خواهید مسیرهایی برای برنامه وب خود ایجاد کنید؟ همه آنها در یک فایل web.php قرار می‌گیرند. علاقه‌مند به تنظیم مسیرهای API هستید؟ همانطور که حدس زده‌اید، api.php جایی است که باید بروید. به خصوص یك ویژگی مفید برای مسیریابی لاراول، گروه بندی است. به عنوان مثال، یک سناریو را در نظر بگیرید که در آن شما می‌خواهید برخی از صفحات برنامه فقط برای کاربران معتبر وب سایت قابل دسترسی باشد. به جای تعریف آنها به طور جداگانه، همه این مسیرهای صفحه را می‌توان به راحتی با استفاده از میان افزار Auth گروه بندی کرد و این اطمینان را می‌دهد که فقط برای کاربران معتبر قابل دسترسی باشد:

Route::group(['middleware' => 'auth'], function () {
    Route::get('/settings', function ()    {
        // Uses Auth Middleware
    });
    Route::get('/profile', function () {
        // Uses Auth Middleware
    });
});

Eloquent ORM

در لاراول ORM (نگاشت رابطه ای شی) Eloquent نامیده می شود و بسیار قدرتمند است. این کار تمام عملیات‌های پایگاه داده‌ای که برای اجرا در برنامه نیاز دارید را ایجاد می‌کند. از آنجا که لاراول مبتنی بر معماری MVC (Model-View-Controller) است، هنگام استفاده از Eloquent هر جدول پایگاه داده دارای یک مدل متناظر (M در MVC) می‌باشد که برای تعامل با آن جدول استفاده می‌شود. بیایید یک مثال از گرفتن گزارش‌ها در جدول فاکتورها (نشان داده شده توسط مدل فاکتور) در برنامه در نظر بگیریم:

$invoices = Invoice::all();

همانطور که می‌بینید بسیار ساده است. با استفاده از query builder می‌توانید متدهای مختلفی را برای اجرای کوئری‌های پیچیده‌تر به هم متصل کنید:

$invoices = Invoice::where('active', 1)
               ->orderBy('total')
               ->take(10)
               ->get();

رابط query builder بسیار شهودی و روان است، بنابراین می‌توانید درک اساسی از کوئری‌ها داشته باشید حتی بدون داشتن دانش زیادی از سینتکس SQL. در مثال بالا ما تمام فاکتورهای فعال را انتخاب می‌کنیم، آنها را بر اساس فیلد مرتب کرده و فقط 10 رکورد اول را می‌گیریم، سپس با استفاده از متد get آن سوابق را در یک کالکشن لاراول بازیابی می‌کنیم.

لاراول کالکشن یکی دیگر از ویژگی‌های خارق العاده این فریمورک است که می‌توانید در مورد آن بیشتر بخوانید. این قابلیت یک wrapper متناسب با نوع آرایه PHP برای ما فراهم کرده که به ما امکان می‌دهد به راحتی با آرایه‌ها کار کنیم. به ویژه هنگامی که با Eloquent ترکیب شود بسیار مفید خواهد بود. با استفاده از مثال قبلی خود اگر بخواهیم تمام فاکتورهایی را که پرداخت شده از انتخاب حذف شود، در اصل آنها را فیلتر می‌کند تا فقط فاکتورهای پرداخت نشده را شامل شود. ما می‌توانیم از روش رد مجموعه استفاده کنیم:

$activeInvoices = $invoices->reject(function ($invoice) {
    return $invoice->paid;
});

همانطور که قبلا اشاره شد، رابط بصری که Eloquent برای کار با پایگاه داده به ما ارائه می‌دهد، استفاده از آن بسیار لذت بخش و بسیار راحت است. به شرطی که روی ساخت MVP تمرکز کنید و زیادی درگیر سینتکس SQL نباشید.

موتور Blade

لاراول به شما امکان می‌دهد با استفاده از موتور خود یعنی Blade templating به صورت کارآمد و سریع viewهای خود را بسازید. Blade همراه با دستورالعمل‌ها و عملکردهای مفیدی است که به شما اجازه می‌دهد بدون نوشتن منطق پیچیده‌ای که بدون این ویژگی‌ها مورد نیاز است، به سرعت از نمونه اولیه صفحات برنامه خود استفاده کنید. به عنوان مثال می‌خواهید پیام‌های مختلفی را در صفحه خود برای مهمانان و کاربران معتبر نمایش دهید. شما می‌توانید از دستورات Blade's auth و guest استفاده کنید:

@auth
    <p>Welcome to the dashboard!</p>
@endauth

@guest
    <p>Please sign in</p>
@endguest

Blade ما را قادر می‌سازد تا به راحتی از حلقه‌ها در view خود نیز استفاده کنیم. تکرار آرایه‌ها به اندازه کافی آسان است:

@foreach ($invoices as $invoice)
    <p>Invoice number {{ $invoice->id }}</p>
@endforeach

هنگامی که آرایه خالی می‌باشد، لازم است که پیغامی نمایش دهد؟ این یک سناریوی عالی برای دستورالعمل منحصر به فرد Blade است. می‌توانید روی آرایه تکرار کنید و در صورت خالی بودن آرایه، با استفاده از دستورالعمل آن محتوا را نمایش دهید:

@forelse ($invoices as $invoice)
    <li>{{ $invoice->title }}</li>
@empty
    <p>No invoices yet!</p>
@endforelse

Blade همچنین به ما امکان می‌دهد viewهای master-child ایجاد کنیم، بخش‌هایی را که بازدیدهای فرزند می‌توانند گسترش دهند تعریف کنیم، کامپوننت‌های قابل استفاده مجدد را که در بسیاری از viewها قابل استفاده هستند و موارد دیگر را تعریف کنیم. چنین موتور وسوسه انگیزی ابزاری مناسب برای ایجاد هرچه سریعتر لایه اجرای شماست.

ادغام سریع ایمیل

هنگام ساخت MVP به ویژه اگر این محصول SaaS باشد، ادغام پست الکترونیکی از طریق یک سرویس ایمیل معاملاتی ضروری است. لاراول یک API ایمیل ساده برای ارسال ایمیل با درایورهای آماده Mailgun ،Postmark ، Amazon SES یا یک سرور SMTP سفارشی فراهم می‌کند. برای شروع کار تنها کاری که باید انجام دهید این است که جزئیات پیکربندی را پر کنید. همچنین لاراول به شما امکان می‌دهد قبل از شروع استفاده از سرویس پولی، Mailtrap - سرویس تست ایمیل‌های برنامه خود را به راحتی پیکربندی کنید.

این فریمورک نه تنها کار ما را در ارتباط با سرویس دهندگان ایمیل مختلف سهولت می‌بخشد، بلکه ما را به Mailers نیز مجهز می‌کند، این قابلیت به ما امکان می‌دهد هر نوع ایمیل را که در برنامه‌های خود استفاده می‌کنیم تعریف کنیم. با استفاده از Maibles می‌توانیم الگوهای view را مانند هر صفحه‌ای در لاراول تعریف کنیم و آن را اتصال دهیم تا به عنوان الگوی ایمیل استفاده شوند. همه موارد موجود با استفاده از دستور make:mail ایجاد می‌شود:

php artisan make:mail InvoicePaid

در این مثال می‌خواهیم ایمیلی را تعریف کنیم که باید بعد از هر بار پرداخت فاکتور به عنوان پیام تشکر برای مشتری ارسال شود. Mailable از یک رابط بصری برخوردار است که به ما امکان می‌دهد متدهایی را درست شبیه Eloquent ایجاد کنیم و دقیقا آنچه را که ایمیل باید انجام دهد، تعریف کنیم. در کلاس InvoicePaid ایجاد شده در داخل متد build می‌توانیم اکشن ایمیل را تنظیم کنیم:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->from('[email protected]')
                ->view('emails.invoice.paid')
		->attach('/path/to/file');
}

بنابراین هر بار که فاکتور پرداخت می‌شود، لاراول با استفاده از آدرسی که با متد from تعریف شده است، با ضمیمه پیوست شده با متد attach، نامه الکترونیکی با الگوی پیکربندی شده توسط متد view را ارسال می‌کند که کاملا سرراست است. اکنون هر زمان که بخواهیم این چنین ایمیلی را ارسال کنیم، می‌توانیم این کار را از طریق controller انجام دهیم:

Mail::to($email)->send(new InvoicePaid);

اینها فقط اصول اولیه است. با داشتن ویژگی‌های پیشرفته‌تر می‌توان موارد موجود را فراخوانی کرد تا در رویدادهای خاص مورد استفاده قرار گیرند. همچنین می‌توان از داده‌های پویا، قالب‌های مختلف و موارد دیگر استفاده کرد.

Sanctum

غالبا نیاز داریم که یک SPA (برنامه تک صفحه‌ای) برای بک-اند Laravel API خود بسازیم. رایج ترین مشکل هنگام ساخت SPA ایجاد سیستم احراز هویت مبتنی بر توکن برای آن است. خوشبختانه پکیج لاراول به نام Sanctum یک سیستم احراز هویت کم حجم برای SPAها و برنامه‌های تلفن همراه را فراهم می‌کند.

Sanctum یک روش ساده برای تأیید اعتبار برنامه‌های تک صفحه‌ای که نیاز به برقراری ارتباط با APIهای لاراول ما دارند ارائه می‌دهد. Sanctum از هیچ نوع توکنی استفاده نمی‌کند. در عوض از احراز هویت داخلی سشن مبتنی بر کوکی‌های لاراول بهره می‌گیرد. این اساسا بدان معنی است که شما می‌توانید از سیستم احراز هویت استاندارد لاراول برای تایید کاربران در SPA خود بدون هیچ گونه دردسر ذخیره و تازه سازی توکن‌ها در سمت کلاینت استفاده کنید. یعنی نوعی صرفه جویی در وقت هنگام ساخت MVP.

اکوسیستم

اکوسیستم لاراول شاید غنی‌ترین محیط نسبت به هر فریمورک دیگری باشد. بسیاری از پکیج‌ها و ابزارهای رسمی برای کارهای مختلف به ما توسعه دهندگان این امکان را می‌دهد تا هنگام ساخت محصولات در زمان بسیار زیادی صرفه جویی کرده و بر روی موارد مهم تمرکز کنیم. در زیر چند مورد از محبوب‌ترین پکیج‌ها و ابزارهای لاراول ذکر شده‌اند:

  • Cashier - ادغام صورتحساب (Stripe را به راحتی در برنامه خود استفاده کنید)
  • Socialite - احراز هویت کاربران با استفاده از شبکه‌های اجتماعی و وب سایت‌های مختلف
  • Dusk - تست مرورگر - دستیار دیباگینگ
  • Echo - رویدادهای بیدرنگ (real-time)
  • Scout – اضافه کردن جستجوی متن کامل در برنامه

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

مستندات و انجمن

لاراول دارای مستنداتی است که در بین بهترین زبان‌ها یا فریمورک‌ها بهترین می‌باشد. هر یک از جنبه‌ها و ویژگی‌های زبانی در آن توصیف و به نمایش گذاشته شده، به همراه موارد استفاده مشترک که به صورت واضح و قابل فهم ترسیم شده است و به طور مداوم با هر نسخه اصلی لاراول به روز می‌شود و روز به روز بهتر می‌گردد.

جامعه توسعه دهندگان لاراول بسیار گسترده است و هر روز بزرگتر می‌شود؛ زیرا در حال حاضر لاراول محبوب‌ترین فریمورک PHP است. همچنین صدها پرسش و مشكل در جوامع و انجمن‌های مختلف آنلاین حل و فصل شده است. بنابراین در هر پروژه‌ای که گیر بیفتید، حتما کمک خواهید گرفت.

با در نظر داشتن همه اینها، من یک منبع آنلاین ایجاد کردم که امیدوارم مقداری ارزش به جامعه توسعه دهندگان لاراول داده شود. هنگام تلاش برای ایجاد یک محصول عالی، شما همیشه به دنبال راه‌هایی برای بهبود عملکرد و کارایی کد خود هستید. اگرچه آموزش‌های عالی در بسیاری از وب سایتها موجود است، اما چیزی که من آن را فقدان می‌دانم تنها مکانی برای نکات کوتاه و ساده لاراول است که عموما در مورد روش‌های بهتر کدزنی و کارآیی آن می‌باشد. بنابراین می‌توانید وب سایت LaravelBit را بررسی کرده و موارد عملی و کوچک کد لاراول که هفته‌ای 3 بار منتشر می‌شود را به صورت کاملا رایگان در اختیار داشته باشید.

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

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

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

آفلاین
user-avatar
عرفان حشمتی @heshmati74
مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو