لاراول 10 منتشر شده است و شامل بهروزرسانیها و امکانات جذاب بسیاری است که علاقهمندان لاراول را شگفتزده خواهد کرد. این نسخه نیز مانند نسخههای…
پنل نویسندگان
به جرات می توان گفت که کمتر کسی است که در فضای توسعه وب فعال باشد اما نام لاراول را نشنیده باشد! اما اگر با لاراول آشنا نیستید، این مقاله تمام موارد مورد نیاز را برایتان توضیح می دهد.
فریم ورک ها یک پلتفرم نرم افزاری برای توسعه نرم افزار هستند. با اینکه شما می توانید نرم افزارهای خودتان را به صورت خالص و از صفر بنویسید، انجام این کار در برنامه های متوسط و بزرگ بسیار سخت است چرا که باید تک تک کارهای ریز و بزرگ را خودتان انجام بدهید. تصور کنید که بخواهید یک خودرو بسازید. از نظر تئوری شما می توانید تمام وسایل یک خودرو را خریداری کرده و سپس قسمت های مختلف مانند موتور ماشین را به صورت دستی بسازید و در نهایت این قطعات را سر هم کرده و یک خودرو را داشته باشید. آیا این کار ممکن است؟ اگر دانش تخصصی آن را داشته باشید بله ممکن است اما انجام آن سال ها طول خواهد کشید!
زمانی که در مورد توسعه نرم افزار و وب سایت نیز صحبت می کنیم، ماجرا به همین شکل است. نوشتن یک وب سایت بزرگ مانند آمازون از صفر بسیار آزاردهنده است و زمان بسیار زیادی را از ما و تیم توسعه ما خواهد گرفت. با این حساب اگر بخواهم به زبان ساده تر توضیح بدهم می گویم فریم ورک ها مجموعه کدهای آماده ای هستند که افرادی برای استفاده ما نوشته اند. ما با استفاده از فریم ورک ها می توانیم روی عملیات های سطح بالای برنامه تمرکز کنیم (مثل ارسال ایمیل یا دسترسی کاربر به قسمتی خاص) و ریزه کاری ها یا همان علمیات های سطح پایین (مانند اعتبارسنجی) را نادیده بگیریم، چرا که فریم ورک ها مدیریت این بخش را بر عهده می گیرند.
استفاده از فریم ورک ها محدود به توسعه اولیه نیست. با اینکه فریم ورک ها سرعت توسعه را برای ما بالا برده و این فرآیند را تسهیل می کنند اما مسئله، فراتر از توسعه اولیه نرم افزار است. پس از اینکه شما و تیم شما نرم افزار مورد نظرتان را ساختید (این نرم افزار می تواند یک وب سایت باشد یا یک نرم افزار اندروید یا هر نرم افزار دیگری) حالا باید آن را maintain کنید. maintain به معنی «نگهداری» و «مدیریت» نرم افزار می باشد. مثلا اگر یک وب سایت را ساخته باشید باید به شکایات مشتریان پاسخ بدهید، وب سایت را هر از چند گاهی به روز رسانی کنید تا از خطرات جدید در امان بمانید، سرورهایتان را افزایش بدهید تا بتوانید میزبان کاربران بیشتری باشید و الی آخر. نرم افزارها مانند فرزندان توسعه دهندگان هستند و تولد آن ها تازه شروع کار است!
در صورتی که نرم افزار خود را بدون استفاده از فریم ورک ها نوشته باشید، بخش مدیریت و نگهداری سایت ممکن است برایتان تبدیل به یک جهنم شود. بنابراین فریم ورک ها در طول زندگی نرم افزار شما همراه شما خواهند بود و بسیار مهم است که فریم ورکی را انتخاب کنید که پخته باشد و بدانیم تا سال های سال به روز رسانی خواهد شد. برخی از مزایای فریم ورک ها به شرح زیر است:
برخی از افراد هنگام توضیح فریم ورک ها می گویند که فریم ورک ها مجموعه ای از کتابخانه ها هستند اما این حرف اصلا صحیح نیست چرا که برخی از فریم ورک ها از کتابخانه ها استفاده نمی کنند. اگر بخواهیم به طور کلی صحبت کنیم، کتابخانه ها معمولا برای اهداف کوچکتری ساخته شده اند و قدرت کمتری دارند در صورتی که فریم ورک ها بسیار بزرگ هستند و چهارچوب کلی و ساختار نرم افزار شما را مشخص می کنند.
همچنین عده دیگری از افراد می گویند که تفاوت بین کتابخانه و فریم ورک در این است که با حذف کتابخانه از برنامه، قسمت خاصی از برنامه از کار می افتد اما با حذف فریم ورک تمام برنامه متوقف خواهد شد. این حرف تا حدی صحیح است اما لزوما برای تمام کتابخانه ها مصداق ندارد. به طور مثال React یک کتابخانه جاوا اسکریپتی است اما آنچنان بزرگ است که بیشتر توسعه دهندگان به آن فریم ورک می گویند! اگر برنامه ای را با React نوشته باشید و آن را حذف کنید دیگر هیچ چیزی از برنامه شما باقی نخواهد ماند!
تفاوت بسیار بزرگ تر و تفاوت اصلی بین کتابخانه ها و فریم ورک ها اینجاست که کتابخانه ها توسط کدهای شما صدا زده می شوند در حالی که فریم ورک است که کدهای شما را صدا می زند! یعنی چه؟ بگذارید یک مثال ساده برایتان بزنم. کتابخانه CURL یک کتابخانه در زبان PHP است که به PHP اجازه می دهد با API های مختلف و سرورهای دیگر در ارتباط باشد. زمانی که می خواهیم از این کتابخانه در PHP استفاده کنیم، این کدهای PHP شما است که توابع موجود در این کتابخانه را صدا می زند. از طرف دیگر زمانی که از یک فریم ورک PHP مانند لاراول استفاده می کنیم، رابطه برعکس می شود! یعنی لاراول کدهایی که توسط شما نوشته شده است را صدا زده و اجرا می کند. به این موضوع IOC یا Inversion of Control می گوییم که در فارسی به «وارونگی کنترل» ترجمه می شود.
برخی از افراد تصور می کنند که می توانند بدون یادگیری زبان برنامه نویسی از فریم ورک ها استفاده کنند. با اینکه در عمل انجام چنین کاری ممکن است اما به هیچ عنوان پیشنهاد نمی شود چنین کاری را انجام بدهید. یادگیری یک زبان برنامه نویسی مانند فونداسیون یا نهاد یک ساختمان است و به شما مباحث اصلی مربوط به برنامه نویسی را آموزش می دهد. اگر بدون این پایه محکم وارد یادگیری فریم ورک ها شوید، با مشکلات متعددی روبرو خواهید شد: اولا درک شما از کار هایی که انجام می دهید کاملا سطحی خواهد بود، دوما این درک سطحی باعث کاهش توانایی شما در حل مشکلات می شود، سوما فریم ورک ها قابلیت هایی را بر اساس قابلیت های زبان برنامه نویسی شان ایجاد می کنند و اگر این زبان ها را نشناسید یادگیری این قابلیت ها شما را گیج خواهد کرد، چهارما درک سطحی شما باعث می شود از آزمون های استخدامی عقب مانده و در آن ها قبول نشوید.
بنابراین پیشنهاد می کنم بدون یادگیری زبان PHP اصلا به فکر یادگیری فریم ورک های آن مانند لاراول نباشید. لزومی ندارد که یادگیری زبان PHP برای شما در حد استادی باشد اما باید با اکثر مباحث PHP آشنا باشید و نحوه تعامل آن با سرور را بدانید.
لاراول مشهورترین و بزرگترین فریم ورک برای زبان PHP است که سرعت توسعه برنامه های وب شما را بسیار بالا می برد. با اینکه لاراول بزرگترین فریم ورک PHP برای برنامه های تحت وب است، توسعه دهنده آن، آقای Taylor Otwell، آن را به صورت کاملا رایگان عرضه کرده است و و هیچ قسمت پولی ندارد. این مسئله باعث افزایش محبوبیت این فریم ورک شده است. همچنین لازم به ذکر است که لاراول متن باز (open-source) است، بنابراین می توانید کدهای درون آن را به راحتی مشاهده کنید. لاراول ویژگی های خاص خودش را دارد که باید در این بخش مورد بررسی ما قرار بگیرند.
همانطور که توضیح دادم لاراول یک فریم ورک برای زبان PHP و توسعه برنامه های تحت وب است. یکی از دلایل محبوبیت لاراول این است که فرآیند توسعه وب را بسیار آسان تر می کند؛ به طور مثال لاراول routing (مدیریت URL ها) و قالب سازی HTML (تزریق داده از پایگاه داده به HTML) و authentication (احراز هویت) را به صورت آماده در خودش دارد و شما می توانید به راحتی از آن استفاده کنید.
طبیعتا از آنجایی که لاراول برای زبان PHP نوشته شده است، به طور کلی یک تکنولوژی server-side یا back-end محسوب می شود، گرچه که opinionated یا «صاحب نظر» محسوب می شود (در این باره بیشتر صحبت خواهیم کرد). با این حساب لاراول مسئولیت بخش back-end وب سایت شما را بر عهده می گیرد و انتخاب تکنولوژی های front-end (مثل HTML ساده یا React و Vue و غیره) بر عهده خود شما است. نهایتا اگر برنامه شما بیشتر شبیه به برنامه های وبلاگی است که می خواهید پست هایی را در آن منتشر کنید می توانید از لاراول به همراه WordPress استفاده نمایید که یکی از پیشرفته ترین سیستم های مدیریت محتوا برای زبان PHP است.
لاراول یکی از محبوب ترین تکنولوژی های موجود در بازار ایران است بنابراین همیشه استخدام خواهد داشت اما مشخص کردن یک قیمت خاص بسیار سخت است. درآمد توسعه دهندگان لاراول معمولا بسته به تجربه، سطح، شهر و محل کار و عوامل مختلفی دارد. با نگاهی به آگهی های استخدامی خواهید دید که این درآمد می تواند بین ۴ تا ۱۰ میلیون نیز باشد! بنده شخصا به آگهی خاصی از یک شرکت ایرانی برخورد کردم که برای متخصصین لاراول با تجربه بالا، ۱۶ میلیون تومان نیز پرداخت می کرد. درآمد جهانی توسعه دهندگان لاراول نیز معمولا بین ۶۰ تا ۹۰ هزار دلار در سال است.
اگر با زبان PHP آشنایی داشته باشید و بدانید وب سایت ها چطور کار می کنند، یادگیری لاراول یکی از شیرین ترین تجربه های توسعه شما خواهد بود. یکی از دلایل محبوبیت لاراول یادگیری آسان آن می باشد.
لاراول از معماری MVC پیروی می کند، آیا با آن آشنا هستید؟ معماری های مختلفی برای توسعه برنامه های تحت وب وجود دارند اما MVC یکی از مشهور ترین آن ها است. در این معماری خاص برنامه های تحت وب به سه قسمت Model و View و Controller تقسیم می شوند و به همین دلیل نام این معماری MVC انتخاب شده است. هر کدام از بخش های Model و View و Controller جنبه خاصی از برنامه شما را شامل می شوند بنابراین باید با آن ها آشنا شویم تا بتوانیم نحوه کار لاراول را درک کنیم.
بخش View: این بخش مسئول نمایش داده های برنامه است و به زبان ساده بخشی است که کاربر آن را مشاهده می کند. با این حساب در برنامه های تحت وب، View همان فایل های HTML شما خواهند بود که در مرورگر کاربر بارگذاری می شوند. تمام منوهای آبشاری یا textare یا فرم ها و تصاویر و غیره جزئی از View محسوب می شوند. احتمالا برایتان سوال می شود که View این داده ها را از کجا می آورد؟ View داده هایش را از Model می گیرد، اما نه به صورت مستقیم!
بخش Controller: این بخش مسئول برقراری رابطه بین View و Model است. این بخش مانند مغز برنامه ما است چرا که تمام منطق مدیریتی برنامه را کنترل می کند. Controller مسئول پاس دادن داده ها از Model به View است اما می تواند به جای این کار داده ها را از Model گرفته و ویرایش کرده و دوباره به Model ارسال کند. به طور مثال کنترلر مشتریان، تمام منطق کاری مربوط به امور مشتریان را بر عهده می گیرد.
بخش Model: این بخش مسئول مدیریت و ذخیره سازی داده های برنامه است که کاربر با آن ها سر و کار دارد. به زبان ساده تر Model همان بخش پایگاه داده برنامه ما است. من برایتان توضیح دادم که View داده هایش را از Model می گیرد و حالا باید متوجه حرف من شده باشید. مثلا اگر بخواهیم سفارشات یک مشتری را به او نمایش بدهیم، ابتدا controller که مغز برنامه است، چنین درخواستی را از سمت کاربر می بیند و داده ها را از Model گرفته و سپس به View پاس می دهد.
اگر بخواهیم به همان مثال ماشین برگردیم چطور؟ ما وب سایت خودمان را به صورت یک ماشین تصور می کنیم. در این حالت View همان قسمت ظاهری ماشین مانند فرمان، ترمز، دنده، داشبورد و امثال آن است. قسمت Controller همان بخش داخل کاپوت ماشین مانند موتور، رادیاتور و امثال آن است. نهایتا Model همان باک بنزین شما است.
معماری MVC مزایای خاص خودش را دارد. من سعی کرده ام در این بخش برخی از مزایای مهم معماری MVC را برایتان توضیح بدهم:
در کنار مزایای ذکر شده طبیعتا معایبی نیز برای معماری MVC در نظر گرفته می شود. چند مورد از این معایب را در لیست زیر مشاهده می کنید.
یکی از نقاط قوت لاراول که طرفداران بسیار زیادی دارد وجود یک ORM خاص به نام Eloquent است. برای اینکه با این بحث آشنا بشوید باید ابتدا برایتان توضیح بدهم که ORM ها چه چیزی هستند.
ORM خلاصه عبارت Object-Relational-Mapper هستند و اگر از افراد تازه کار در این حوزه باشید احتمالا با خواندن آن کمی سر در گم شوید. در توسعه وب عادی و بدون ORM ها برای نوشتن کوئری های پایگاه داده از زبان SQL استفاده می کنیم (البته اگر پایگاه داده تان MySQL یا امثال آن باشد). مثلا برای دریافت کاربری با یک ایمیل خاص می گوییم:
SELECT * FROM users WHERE email = 'test@test.com';
این یک کوئری ساده SQL است و انجام این کار هیچ مشکلی ندارد اما برخی از اوقات نوشتن کوئری های SQL زمان بر و سخت می شود. اینجاست که ORM ها وارد کار می شوند. مثلا اگر بخواهیم همین عملیات (دریافت کاربر بر اساس ایمیلی خاص) را با استفاده از یک ORM بنویسیم، کدی به شکل زیر خواهیم داشت:
$user = orm("users").where({ email: 'test@test.com' });
احتمالا با خودتان می گویید که این دو کد تفاوت زیادی ندارند و حرفتان درست است. قدرت ORM ها زمانی نشان داده می شود که کوئری های SQL شما پیچیده شود و مطمئن باشید اینچنین خواهد شد. مثلا اگر یک وبلاگ داشته باشیم، هر پست یک نویسنده دارد که خودش یک کاربر است و هر کاربر می تواند چندین پست داشته باشد. از طرف دیگر هر پست می تواند چندین کامنت داشته باشد اما هر کامنت می تواند فقط به یک پست تعلق داشته باشد. این روابط در برنامه های واقعی پیچیده می شوند و نوشتن SQL با دستورات Join واقعا آزاردهنده خواهد بود. به طور مثال:
SELECT gameTeam.gameTeamId,gameTeam.gameId,gameTeam.gameNumber, gameTeam.slot,gameTeam.misconduct, poolTeam.regTeamId,poolTeam.regTeamName, poolTeam.division,poolTeam.poolTeamKey FROM gameTeams AS gameTeam LEFT JOIN poolTeams AS poolTeam ON poolTeam.poolTeamId = gameTeam.poolTeamId WHERE gameTeam.gameId IN (?) ORDER BY gameNumber,slot
حتی خواندن چنین کوئری آزاردهنده است چه برسد به نوشتن آن!
Eloquent یک ORM برای لاراول است که انجام این کار را بسیار آسان تر می کند. شما می توانید با شرکت در دوره های مختلف لاراول در روکسو، لاراول را به صورت کامل یاد بگیرید!
لاراول 10 منتشر شده است و شامل بهروزرسانیها و امکانات جذاب بسیاری است که علاقهمندان لاراول را شگفتزده خواهد کرد. این نسخه نیز مانند نسخههای…