لاراول یک انتخاب عالی برای MVP
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 10 دقیقه

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

طی سال‌های اخیر من در ایجاد چندین پروژه استارتاپی مشارکت داشتم که همه آنها شامل ساخت MVP (پایدارترین محصول) بود. بدین صورت که در حین توسعه آن‌ها با فناوری‌های مختلف از جمله Ruby on Rails، NodeJS و CodeIgniter کار کردم. همه این فناوری‌ها عالی هستند و به نوعی امتحان خود را پس داده‌اند، اما من همیشه احساس می‌کردم که کارهای اساسی را می‌توان بسیار راحت‌تر انجام داد و باید چیزی را پیدا کنم که به من امکان نمونه‌سازی سریعتر را بدهد.

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

احراز هویت آماده

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

حفظ جزئیات مربوط به کاربر لاگین شده در 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 (Object Relational Mapping) در لاراول   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 داشته باشید. در مثال بالا همه فاکتورهای فعال را انتخاب می‌کنیم، آنها را بر اساس فیلد total مرتب کرده، فقط 10 رکورد اول را می‌گیریم و سپس با استفاده از متد get این رکوردها را در کالکشن لاراول بازیابی می‌کنیم.

کالکشن لاراول یکی دیگر از ویژگی‌های فوق العاده این فریمورک است که خودتان می‌توانید در مورد آن بیشتر بخوانید. این یک فضا در اطراف آرایه PHP فراهم می‌کند که به ما امکان می‌دهد به راحتی با آرایه‌ها کار کنیم. همچنین هنگام ترکیب با Eloquent بسیار مفید عمل می‌کند. طبق مثال قبلی خود می‌خواهیم همه فاکتورهایی را که پرداخت شده است حذف کنیم. اساسا آنها را فیلتر کرده تا فقط فاکتورهای پرداخت نشده را شامل شود. بدین منظور می‌توانیم از متد Collection Reject استفاده کنیم:

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

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

موتور قالب Blade

لاراول به شما این اجازه را می‌دهد تا با استفاده از موتور قالب Blade بسیار کارآمد و سریع view خود را ایجاد کنید. Blade دارای دستورات و عملکردهای مفیدی است که به شما امکان می‌دهد بدون نوشتن منطق پیچیده که بدون این ویژگی‌ها مورد نیاز است، سریعا صفحات برنامه خود را نمونه‌سازی کنید. به عنوان مثال، می‌خواهید پیامهای متفاوتی را در صفحه خود برای مهمانان و کاربران تأیید شده نمایش دهید. بدین صورت می‌توانید از دستورات 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

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

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

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

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

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

لاراول علاوه بر این که به ما امکان اتصال به سرویس‌دهندگان ایمیل مختلف را می‌دهد، ما را با Mailables نیز مجهز می‌کند - قابلیتی که به ما اجازه می‌دهد هر نوع ایمیلی را که در برنامه‌های خود استفاده می‌کنیم تعریف نماییم. با استفاده از Mailables می‌توانیم الگوهای view را در لاراول درست مانند هر صفحه تعریف کنیم و آنها را به عنوان الگوی ایمیل مورد استفاده قرار دهیم. هر Mailable با استفاده از دستور 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');
}

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

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

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

Sanctum

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

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

اکوسیستم انعطاف پذیر

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

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

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

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

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

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

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

به منظور یادگیری بیشتر فریمورک محبوب لاراول می‌توانید از این دوره مفید و رایگان بهره کامل را ببرید.

منبع

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

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

1 سال پیش
لاراول
php
laravel
/@heshmati74
عرفان حشمتی
Full-Stack Web Developer

مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت

دیدگاه و پرسش

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

ورود یا ثبت‌نام

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

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

عرفان حشمتی

Full-Stack Web Developer