چرا لاراول؟

چرا لاراول؟

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

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

«چون وجود دارد» ممکن است توجیه درستی برای صعود به یک کوه باشد، اما دلایل بهتری برای انتخاب یک فریم‌ورک خاص—یا حتی استفاده از فریم‌ورک به‌طور کلی—وجود دارد. بنابراین، باید این سؤال را مطرح کنیم: چرا فریم‌ورک؟ و به‌طور خاص، چرا لاراول؟

چرا از یک فریم‌ورک استفاده کنیم؟

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

فریم‌ورک‌هایی مانند لاراول—و همین‌طور Symfony، Lumen و Slim—مجموعه‌ای از کامپوننت‌های شخص ثالث را به همراه «glue» اختصاصی فریم‌ورک، مانند فایل‌های تنظیمات، سرویس پروایدرها، ساختارهای دایرکتوری استاندارد و فرآیند بوت‌استرپ اپلیکیشن، یکپارچه می‌کنند.

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

«خودم از صفر می‌سازم»

فرض کنید که می‌خواهید یک وب اپلیکیشن جدید را بدون استفاده از فریم‌ورک توسعه دهید. از کجا باید شروع کنید؟ خب، ابتدا باید درخواست‌های HTTP را مسیریابی کنید، پس باید تمام کتابخانه‌های موجود برای مدیریت درخواست و پاسخ HTTP را بررسی کرده و یکی را انتخاب کنید. سپس، به یک سیستم مسیریابی (Router) نیاز دارید. همچنین، باید یک فایل پیکربندی مسیرها (Routes Configuration) ایجاد کنید. اما این فایل باید چه سینتکسی داشته باشد؟ کجا باید قرار بگیرد؟

حالا به کنترلرها می‌رسیم. کنترلرها کجا باید تعریف شوند و چطور باید لود شوند؟ برای مدیریت وابستگی‌های کنترلرها، احتمالاً به یک Dependency Injection Container نیاز دارید. اما کدام را انتخاب کنید؟

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

ثبات و انعطاف‌پذیری

فریم‌ورک‌ها این مشکلات را حل می‌کنند، چرا که پاسخی دقیق و اصولی به این سؤال ارائه می‌دهند: «کدام کامپوننت را در اینجا استفاده کنیم؟» و اطمینان حاصل می‌کنند که کامپوننت‌های انتخاب‌شده به خوبی با یکدیگر هماهنگ باشند. علاوه بر این، فریم‌ورک‌ها یک سری قواعد و قراردادها ارائه می‌دهند که میزان کدی که یک توسعه‌دهنده‌ی جدید در پروژه باید درک کند را کاهش می‌دهد—مثلاً، اگر نحوه‌ی مسیریابی در یک پروژه‌ی لاراول را بدانید، در تمام پروژه‌های لاراول دیگر نیز آن را خواهید فهمید.

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

تاریخچه‌ ی مختصر فریم‌ورک‌های وب و PHP

برای اینکه بتوانید به این سؤال پاسخ دهید که «چرا لاراول؟»، لازم است که با تاریخچه‌ی آن و فریم‌ورک‌هایی که پیش از آن وجود داشتند آشنا شوید. قبل از محبوبیت لاراول، فریم‌ورک‌ها و رویکردهای مختلفی در PHP و سایر حوزه‌های توسعه‌ی وب وجود داشتند.

Ruby on Rails

در سال ۲۰۰۴، David Heinemeier Hansson اولین نسخه از Ruby on Rails را منتشر کرد و از آن زمان تاکنون، کمتر فریم‌ورکی در دنیای توسعه‌ی وب یافت می‌شود که به نوعی تحت تأثیر Rails قرار نگرفته باشد.

Rails و تأثیر آن بر توسعه‌ ی وب

Rails مفاهیمی مانند MVC، APIهای RESTful مبتنی بر JSON، قرارداد به‌جای پیکربندی (Convention over Configuration)، Active Record و بسیاری از ابزارها و استانداردهای دیگر را رایج کرد که تأثیر عمیقی بر نحوه‌ی توسعه‌ی وب‌اپلیکیشن‌ها، به‌ویژه در زمینه‌ی توسعه‌ی سریع اپلیکیشن (Rapid Application Development)، گذاشت.

هجوم فریم‌ورک‌های PHP

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

CakePHP اولین فریم‌ورک PHP بود که در سال ۲۰۰۵ معرفی شد و به‌دنبال آن، Symfony، CodeIgniter، Zend Framework و Kohana (که فورکی از CodeIgniter بود) به بازار آمدند. در سال ۲۰۰۸ Yii منتشر شد و در سال ۲۰۱۰ نیز Aura و Slim معرفی شدند. سال ۲۰۱۱ شاهد ورود FuelPHP و Laravel بود؛ هرچند که این دو فریم‌ورک مستقیماً از CodeIgniter مشتق نشده بودند، بلکه به‌عنوان جایگزین‌هایی برای آن مطرح شدند.

برخی از این فریم‌ورک‌ها شباهت زیادی به Rails داشتند و بر ORMها، معماری MVC و ابزارهایی برای توسعه‌ی سریع تمرکز داشتند. برخی دیگر، مانند Symfony و Zend، بیشتر به الگوهای طراحی سازمانی (Enterprise Design Patterns) و تجارت الکترونیک توجه داشتند.

نقاط قوت و ضعف CodeIgniter

CakePHP و CodeIgniter از جمله اولین فریم‌ورک‌های PHP بودند که صراحتاً اعلام کردند که از Rails الهام گرفته‌اند. CodeIgniter به‌سرعت به شهرت رسید و تا سال ۲۰۱۰ می‌توان گفت که محبوب‌ترین فریم‌ورک PHP مستقل بود.

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

برخلاف بسیاری از فریم‌ورک‌های دیگر، CodeIgniter تحت مدیریت یک شرکت قرار داشت و به‌روزرسانی آن با تأخیر انجام می‌شد. این موضوع به‌ویژه در پذیرش ویژگی‌های جدید PHP 5.3، مانند Namespaces، مهاجرت به GitHub و بعدها Composer، مشهود بود. این وضعیت باعث شد که Taylor Otwell، خالق لاراول، در سال ۲۰۱۰ از CodeIgniter ناامید شود و تصمیم بگیرد که فریم‌ورک خودش را بسازد.

لاراول 1، 2 و 3

اولین نسخه بتای لاراول ۱ در ژوئن ۲۰۱۱ منتشر شد و به‌طور کامل از ابتدا نوشته شده بود. این نسخه شامل یک ORM اختصاصی (به نام Eloquent)، مسیریابی مبتنی بر closure (الهام‌گرفته از Ruby Sinatra)، یک سیستم ماژولار برای گسترش‌پذیری، و ابزارهای کمکی برای فرم‌ها، اعتبارسنجی، احراز هویت و موارد دیگر بود.

توسعه اولیه لاراول به‌سرعت پیش رفت و نسخه‌های لاراول ۲ و ۳ به‌ترتیب در نوامبر ۲۰۱۱ و فوریه ۲۰۱۲ منتشر شدند. این نسخه‌ها کنترلرها، تست واحد، یک ابزار خط فرمان، کانتینر وارونگی کنترل (IoC)، روابط Eloquent و مایگریشن‌ها را معرفی کردند.

لاراول 4

با انتشار لاراول ۴، تیلور کل فریم‌ورک را از پایه بازنویسی کرد. در این زمان، Composer — مدیر بسته‌ی حالا همه‌گیر PHP — نشانه‌هایی از تبدیل‌شدن به یک استاندارد صنعتی را نشان می‌داد، و تیلور ارزش بازنویسی فریم‌ورک به‌عنوان مجموعه‌ای از کامپوننت‌ها که توسط Composer توزیع و بسته‌بندی می‌شوند را دید.

تیلور مجموعه‌ای از کامپوننت‌ها را تحت نام رمز Illuminate توسعه داد و در ماه مه ۲۰۱۳، لاراول ۴ را با ساختاری کاملاً جدید منتشر کرد. به‌جای اینکه بیشتر کد خود را به‌صورت یک بسته دانلودی عرضه کند، لاراول اکنون بیشتر کامپوننت‌های خود را از Symfony (فریم‌ورک دیگری که کامپوننت‌هایش را برای استفاده دیگران منتشر کرده بود) و کامپوننت‌های Illuminate از طریق Composer دریافت می‌کرد.

لاراول ۴ همچنین قابلیت‌هایی مانند صف‌ها (queues)، یک کامپوننت ایمیل، facadeها و seed کردن دیتابیس را معرفی کرد. و از آنجا که لاراول حالا بر کامپوننت‌های Symfony تکیه داشت، اعلام شد که لاراول از برنامه‌ی انتشار شش‌ماهه Symfony پیروی خواهد کرد (نه دقیقاً، ولی با فاصله‌ی کوتاه پس از آن).

لاراول 5

قرار بود لاراول ۴.۳ در نوامبر ۲۰۱۴ منتشر شود، اما با پیشرفت توسعه، مشخص شد که وسعت تغییرات آن به‌اندازه‌ای هست که شایسته‌ی یک نسخه‌ی اصلی جدید باشد، و در نتیجه لاراول ۵ در فوریه ۲۰۱۵ منتشر شد.

لاراول ۵ دارای ساختار دایرکتوری بازطراحی‌شده، حذف کمک‌کننده‌های فرم و HTML، معرفی اینترفیس‌های contract، مجموعه‌ای از ویوهای جدید، Socialite برای احراز هویت شبکه‌های اجتماعی، Elixir برای کامپایل دارایی‌ها، Scheduler برای ساده‌سازی کران، dotenv برای مدیریت ساده‌تر محیط، form requestها، و یک REPL (read–evaluate–print loop) کاملاً جدید بود.

از آن زمان، لاراول از نظر ویژگی‌ها و بلوغ رشد زیادی داشته، اما تغییرات عمده‌ای مانند نسخه‌های قبلی در آن رخ نداده است.

لاراول 6

در سپتامبر ۲۰۱۹، لاراول ۶ با دو تغییر اصلی معرفی شد:

اول، حذف کمک‌کننده‌های سراسری مربوط به رشته‌ها و آرایه‌ها که لاراول ارائه می‌داد (و جایگزینی آن‌ها با فسادها)؛

دوم، تغییر سیستم شماره‌گذاری نسخه‌ها به SemVer (نسخه‌گذاری معنایی).

اثر عملی این تغییر این است که از نسخه ۵ به بعد، نسخه‌های اصلی (مثل ۶، ۷ و...) و نسخه‌های فرعی (مثل ۶.۱، ۶.۲ و...) لاراول با سرعت بسیار بیشتری منتشر می‌شوند.

لاراول در دنیای جدید SemVer (نسخه ۶+)

از نسخه ۶ به بعد، انتشار نسخه‌های لاراول کمتر حالت رویدادهای بزرگ و مهم را دارد، زیرا برنامه انتشار بر اساس SemVer تغییر کرده است.

بنابراین از این به بعد، انتشار نسخه‌های جدید بیشتر به گذر زمان بستگی دارد تا معرفی ویژگی‌های جدید و بزرگ خاص.

چه چیزی لاراول را خاص می‌کند؟

خب، چه چیزی لاراول را متمایز می‌کند؟ چرا داشتن بیش از یک فریم‌ورک PHP در هر زمان ارزش دارد؟ در هر صورت، همه آن‌ها از کامپوننت‌های Symfony استفاده می‌کنند، درست است؟ بیایید کمی درباره اینکه چه چیزی باعث می‌شود لاراول «کار کند» صحبت کنیم.

فلسفه لاراول

کافی است فقط نگاهی به مطالب بازاریابی و فایل‌های README لاراول بیندازید تا ارزش‌های آن را ببینید. تیلور از کلمات مرتبط با نور مثل «Illuminate» و «Spark» استفاده می‌کند. و سپس این‌ها هستند: «Artisans»، «Elegant». همچنین این‌ها: «نفسی تازه»، «شروعی تازه». و در نهایت: «سریع»، «سرعت نور».

دو ارزشی که بیش از همه توسط این فریم‌ورک منتقل می‌شوند، افزایش سرعت توسعه‌دهنده و خوشحالی توسعه‌دهنده هستند. تیلور زبان «Artisan» را به‌طور عمدی در تضاد با ارزش‌های کاربردی‌تر توصیف کرده است. می‌توان منشأ این نوع تفکر را در سؤال او در StackExchange در سال ۲۰۱۱ دید، جایی که نوشت: «گاهی ساعت‌ها وقت می‌گذارم تا کد را از نظر ظاهری زیبا کنم» فقط برای داشتن تجربه‌ای بهتر هنگام نگاه کردن به خود کد. او بارها دربارهٔ ارزش آسان‌تر و سریع‌تر کردن روند اجرای ایده‌ها برای توسعه‌دهندگان صحبت کرده است؛ حذف موانع غیرضروری برای ساخت محصولات عالی.

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

مفهوم هدف‌گیری توسعه‌دهندگان در سراسر مطالب لاراول آشکار است. جملهٔ «توسعه‌دهندگان خوشحال بهترین کد را می‌نویسند» در مستندات آن آمده است. «خوشحالی توسعه‌دهنده از دانلود تا دیپلوی» برای مدتی شعار غیررسمی آن بود. البته، هر ابزار یا فریم‌ورکی ادعا می‌کند که می‌خواهد توسعه‌دهندگان را خوشحال کند. اما داشتن خوشحالی توسعه‌دهنده به‌عنوان یک دغدغهٔ اصلی (نه فرعی) تأثیر زیادی بر سبک و روند تصمیم‌گیری لاراول داشته است. جایی که دیگر فریم‌ورک‌ها ممکن است «خلوص معماری» را به‌عنوان هدف اصلی قرار دهند، یا با اهداف و ارزش‌های تیم‌های توسعهٔ سازمانی سازگار شوند، تمرکز اصلی لاراول بر خدمت‌رسانی به توسعه‌دهندهٔ فردی است. این بدان معنا نیست که نمی‌توان با لاراول برنامه‌هایی با خلوص معماری یا مناسب سازمان‌ها نوشت، اما نیازی نیست که این کار به قیمت از دست دادن خوانایی و قابل‌فهم بودن کد انجام شود.

چگونه لاراول باعث خوشحالی توسعه‌دهندگان می‌شود

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

اول، لاراول یک فریم‌ورک توسعه سریع اپلیکیشن است. این به این معناست که تمرکز آن بر یک منحنی یادگیری سطحی (آسان) و به حداقل رساندن مراحل بین شروع یک اپلیکیشن جدید و انتشار آن است. تمام وظایف رایج در ساخت برنامه‌های وب، از تعامل با پایگاه داده گرفته تا احراز هویت، صف‌ها، ایمیل و کش کردن، با مؤلفه‌هایی که لاراول ارائه می‌دهد ساده‌تر شده‌اند. اما مؤلفه‌های لاراول فقط به‌تنهایی عالی نیستند؛ آن‌ها یک API یکسان و ساختارهای قابل پیش‌بینی در سراسر فریم‌ورک ارائه می‌دهند. این بدان معناست که وقتی در حال امتحان کردن چیزی جدید در لاراول هستید، احتمال زیاد خواهید گفت: "...و فقط کار می‌کند."

این موضوع فقط به خود فریم‌ورک ختم نمی‌شود. لاراول یک اکوسیستم کامل از ابزارها برای ساخت و راه‌اندازی اپلیکیشن‌ها فراهم می‌کند. شما Sail و Valet و Homestead را برای توسعه محلی دارید، Forge برای مدیریت سرور، و Envoyer و Vapor برای دیپلوی پیشرفته. همچنین مجموعه‌ای از پکیج‌های افزوده وجود دارد: Cashier برای پرداخت‌ها و اشتراک‌ها، Echo برای WebSocketها، Scout برای جستجو، Sanctum و Passport برای احراز هویت API، Dusk برای تست فرانت‌اند، Socialite برای ورود با شبکه‌های اجتماعی، Horizon برای مانیتورینگ صف‌ها، Nova برای ساخت پنل‌های مدیریت، و Spark برای شروع سریع یک سرویس SaaS. لاراول تلاش می‌کند کارهای تکراری را از شغل توسعه‌دهندگان حذف کند تا آن‌ها بتوانند کارهای منحصربه‌فرد انجام دهند.

در مرحله بعد، لاراول بر «قرارداد به‌جای پیکربندی» تمرکز دارد — به این معنا که اگر شما مایل باشید از تنظیمات پیش‌فرض لاراول استفاده کنید، کار بسیار کمتری نسبت به فریم‌ورک‌هایی خواهید داشت که از شما می‌خواهند حتی وقتی از پیکربندی پیشنهادی استفاده می‌کنید، تمام تنظیمات خود را تعریف کنید. پروژه‌هایی که با لاراول ساخته می‌شوند زمان کمتری نسبت به پروژه‌هایی که با بیشتر فریم‌ورک‌های PHP دیگر ساخته می‌شوند نیاز دارند.

لاراول همچنین تمرکز عمیقی بر سادگی دارد. استفاده از تزریق وابستگی (Dependency Injection) و ساختگی‌ها (Mocking) و الگوی Data Mapper و ریپازیتوری‌ها و تفکیک مسئولیت‌های دستور و پرس‌وجو (CQRS) و انواع الگوهای معماری پیچیده دیگر در لاراول امکان‌پذیر است، اگر بخواهید. اما در حالی که فریم‌ورک‌های دیگر ممکن است توصیه کنند که در هر پروژه از این ابزارها و ساختارها استفاده کنید، لاراول و مستندات و جامعه‌اش تمایل دارند با ساده‌ترین پیاده‌سازی ممکن شروع کنند — یک تابع سراسری اینجا، یک facade آنجا، ActiveRecord در جای دیگر. این به توسعه‌دهندگان اجازه می‌دهد ساده‌ترین اپلیکیشن ممکن را برای نیازهایشان ایجاد کنند، بدون آنکه استفاده‌پذیری آن در محیط‌های پیچیده محدود شود.

یک منبع جالب از اینکه لاراول چگونه با دیگر فریم‌ورک‌های PHP متفاوت است، این است که خالق آن و جامعه‌اش بیشتر به Ruby و Rails و زبان‌های برنامه‌نویسی تابعی مرتبط و الهام‌گرفته هستند تا به Java. یک جریان قوی در PHP مدرن وجود دارد که به سمت پرحرفی و پیچیدگی تمایل دارد و جنبه‌های جاواگونهٔ PHP را می‌پذیرد. اما لاراول تمایل دارد در سوی دیگر باشد، با پذیرش شیوه‌های کدنویسی و ویژگی‌های زبانی بیان‌گر، پویا و ساده.

جامعه لاراول

اگر این کتاب اولین بار است که شما را با جامعه لاراول آشنا می‌کند، باید بگویم که چیز خاصی در پیش دارید. یکی از ویژگی‌های برجسته لاراول که به رشد و موفقیت آن کمک کرده، جامعه خوش‌آمدگو و آموزشی است که آن را احاطه کرده است. از ویدیوهای آموزشی لاراکست (Laracasts) توسط Jeffrey Way گرفته تا Laravel News، کانال‌های Slack، IRC و Discord، از دوستان در توییتر گرفته تا بلاگرها، پادکست‌ها و کنفرانس‌های Laracon، لاراول جامعه‌ای پررنگ و زنده دارد که شامل افرادی است که از روز اول در این مسیر بودند و کسانی که در حال شروع "روز اول" خود هستند. و این اتفاق تصادفی نیست:

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

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

چگونه کار می‌کند

تا به حال، تمام آنچه که من به اشتراک گذاشته‌ام کاملاً انتزاعی بوده است. حالا شما ممکن است بپرسید: کد چطور؟ بیایید وارد یک برنامه ساده شویم (مثال 1-1) تا ببینید که کار کردن با لاراول در زندگی روزمره واقعاً چطور است.

<?php

Route::get('/', function () {
   return 'Hello, World!';
});

ساده‌ترین عملی که می‌توانید در یک برنامه لاراول انجام دهید، تعریف یک روت است که هر بار کسی آن را بازدید کند، یک نتیجه بازگرداند. اگر یک برنامه لاراول جدید را روی سیستم خود راه‌اندازی کنید، روت را در مثال 1-1 تعریف کنید و سپس سایت را از دایرکتوری عمومی سرو کنید، یک مثال کامل "سلام، دنیا" خواهید داشت (شکل 1-1).


این بسیار مشابه کنترلرها است، همانطور که در مثال 1-2 می‌بینید (که اگر می‌خواهید بلافاصله آن را تست کنید، ابتدا باید دستور php artisan make:controller WelcomeController را اجرا کنید تا کنترلر ساخته شود).

مثال 1-2. "سلام، دنیا" با کنترلرها

/ File: routes/web.php
<?php

use App\Http\Controllers\WelcomeController;

Route::get('/', [WelcomeController::class, 'index']);
// File: app/Http/Controllers/WelcomeController.php
<?php

namespace App\Http\Controllers;

class WelcomeController extends Controller
{
    public function index()
    {
        return 'Hello, World!';
    }
}

 

و اگر پیام‌های تبریک خود را در یک پایگاه داده ذخیره می‌کنید، این کار نیز بسیار مشابه خواهد بود (به مثال 1-3 مراجعه کنید).

مثال 1-3. پیام‌های تبریک چندگانه "سلام، دنیا" با دسترسی به پایگاه داده

// File: routes/web.php
<?php

use App\Greeting;

Route::get('create-greeting', function () {
    $greeting = new Greeting;
    $greeting->body = 'Hello, World!';
    $greeting->save();
});

Route::get('first-greeting', function () {
    return Greeting::first()->body;
});
// File: app/Models/Greeting.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Greeting extends Model
{
    use HasFactory;
}
// File: database/migrations/2023_03_12_192110_create_greetings_table.php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('greetings', function (Blueprint $table) {
            $table->id();
            $table->string('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('greetings');
    }
};

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

 

حالا چرا لاراول؟

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

و چون شما، توسعه‌دهنده عزیز، شایسته شادی هستید.