کدایگنایتر یا لاراول؟ (یا به قول فرنگی­ها Laravel‌ vs CI)

 

پیش‌نوشت: این نوشته یه نوشته ی تخصصی نیست، فقط نظر شخصی خودمه.

 

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

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

قبل از تعریف کردن سفرم به دنیای لاراول، باید یه سوال ازتون بپرسم، آیا تا حالا با فریمورکی رابطه داشتید؟ یا اینکه میخواهید یکی از این دو فریمورک رو به عنوان اولین فریمورکتون انتخاب کنید؟ اگه شما با دنیای فریمورک‌ها و مفاهیم MVC غریبه هستید و تازه میخواهید به سراغشون برید، پیشنهاد من اینه: کدایگنایتر رو به عنوان رفیقتون انتخاب کنید و تو این موضوع شک نکنید!

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

  • لاراول خوب، ساده و سر راسته، قبول دارم! اما کدایگنایتر خیلی ساده‌تره! خیلی خیلی!
  • کدایگنایتر برای راه‌اندازی تقریبا به هیچ تنظیم خاصی نیاز نداره! اما لاراول بِگی نَگی برای تازه‌کارها یخورده دردسر داره، به خصوص که قبل از نصبش باید composer نصب کنید (که البته خیلی هم خوب و کار راه‌اندازه، اما ممکنه تازه‌کارها زیاد باهاش راحت نباش و به قول یکی از بزرگان شاید تازه‌کارها باهاش هَپی نباشن).
  • مستندات کدایگنایتر به طرز وحشتناکی کامل، واضح، ساده و همراه با مثال‌های کاربردیه. میشه گفت تنها مطالعه‌ی مستندات کداینگایتر شما رو به یه حرفه‌ای تو دنیای کدایگنایتر تبدیل میکنه و تقریبا همه چیز درمورد کدایگنایتر تو مستنداتش هست. مستندات کدایگنایتر ساده، مختصر، مفید و در یک کلام بسیار بسیار عالیه! اما در طرف مقابل، اگه تابحال با هیچ فریمورکی رابطه نداشتید و یهو به سراغ مستندات لاراول برید، ممکنه هاج و واج بمونید که ای خدا این دیگه چیه! مشکل اصلی اینجاست که مستندات لاراول به برخی چیزها نپرداخته و به برخی مسائل نیز اونچنان سطحی و گذری پرداخته که برای فهم اون‌ها بی‌شک نیازمند مراجعه به منابع تکمیلی دیگه‌ای خواهید داشت.

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

اگه سابقه‌ی دوستی با فریمورک‌ها رو دارید و میخواهید از بین لاراول و کدایگنایتر یکی رو انتخاب کنید، به نظرم بهتره به سراغ لاراول برید.

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

لاراول روتینگ (Routing) خیلی خوبی داره یا به قولی حسابی راه بلده. از این نظر تو لاراول فکر همه‌چی و همه‌جا رو کردند! به راحتی می‌تونید از طریق روتینگ به هرچیزی که دلتون میخواد برسید. می‌تونید حتی دامین‌ها و ساب‌دامین‌هاتون رو کنترل کنید و به راحتی داینامیک ساب‌دامین راه بندازید. میتونید درخواست‌های GET، POST، PUT، PATCH و DELETE رو به راحتی کنترل و مدیریت کنید. لاراول از دیدگاه روتینگی، مدرن، باشعور و باکلاسه!

لاراول یه دوست فوق‌العاده فهمیده‌ست، به طرز وحشتناکی هوش بالایی داره و شعورش رو همه‌جا به رخ آدم میکشه!! هرچی بهش بگی به طرز عجیب و غریبی میفهمه و با یه لبخند ملیح جوابت رو میده! برای درک بهتر این موضوع می‌تونید سری به Modelها و تعریف اون‌ها بزنید! به راحتی می‌تونید رابطه‌ی بین جداول پایگاه داده رو تعریف کنید و بدون دردسرِ لود کردن پی در پی مدل‌های مختلف، به اطلاعات مرتبط با هم دسترسی داشته باشید. کافیه یه مدل رو لود کنید، می‌تونید از طریق زنجیره‌ی مدل‌ها به اطلاعات مدل‌های مرتبط با اون دسترسی داشته باشید! تازه حتی می‌تونید خودتون مدل رو لود نکنید و لود کردنش رو از طریق مدل بایندینگ (Model Binding) به خود لاراول بسپرین!

لاراول یه سیستم Migration درست و حسابی برای مدیریت ساختار پایگاه داده داره. تو لاراول می‌تونید جداول پایگاه داده‌تون رو از طریق Schema Builder ایجاد کنید و تغییرات‌تون رو از هم با استفاده از همین Schema Builder کنترل کنید. از طریق Schema Builder می‌تونید ورژن‌های مختلف ساختار پایگاه داده‌تون رو کنترل کنید، جداول رو بسازید، تغییرات رو اعمال کنید و هر موقع که لازم بود تغییراتی که در ساختار پایگاه داده‌تون داده بودید رو Rollback کنید. البته کدایگنایتر هم یه نیمچه Migration داره، اما همچین چنگی به دل نمی‌زنه!

لاراول یه ابزار کار با خط فرمان به اسم Artisan داره که امکانات خوبی رو در اختیار شما قرار میده مثل ایجاد Migration، Controller، Model و غیره. همین‌طور می‌تونید از طریق Artisan به ابزارکی به اسم Tinker دسترسی داشته باشید که می‌تونید از طریق اون خیلی چیزها رو تست کنید، مثل لود کردن مدل‌ها، واکشی اطلاعات از اون‌ها و ذخیره کرده اطلاعات جدید تو اون‌ها و غیره.

به مدد قدرتِ Migration، Schema Builder و Tinker میشه ادعا کرد که وقتی با لاراول کار می‌کنید، دیگه هیچ نیازی به ابزاری مثل PhpMyAdmin ندارید!

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

البته این نکته رو هم در نظر داشته باشید که کدایگنایتر منابع سمت سرور به مراتب کمتری مصرف میکنه و با سرعت بیشتری به درخواست‌ها پاسخ میده و به قولی Requests per Second بیشتری داره. منطقی هم هست! لاراول کلی دنگ و فنگ داره، از قدیم هم گفتن هر که بامش بیش، برفش بیشتر! بله! پس منطقیه لاراول رم و سی پی یوی بیشتری مصرف کنه، بلاخره هر که طاووس خواهد جور هندوستان کشد! اگر امکانات دوست‌داشتنیه لاراول رو میخواهید، باید پیِ مصرف بالاش رو هم به تنتون بمالید!

البته این نکته هم ناگفته نمونه که با استفاده از Laravel Homestead می‌تونید یه HHVM برای خودتون راه بندازید و اپلیکیشن‌تون رو داخل اون اجرا کنید و از این طریق کارایی اپلیکیشنتون رو بهبود ببخشید. البته دروغ نگفته باشم، خودم تا حالا با Homestead کار نکردم تا ببینم چقدر کارایی رو افزایش میده، اما با استناد به حرف بزرگان و با درنظر گرفتن اینکه جناب فیسبوک از طرفدارهای HHVM هست، میشه نتیجه گرفت که راه انداختن HHVM می‌تونه به افزایش کارایی اپلیکیشن یا سایتتون منجر بشه.

این بود از سفر من به دنیای لاراول، که جذابیت‌هاش باعث شده فعلا مقیمش بشم! به امید روزی که بار و بندیل سفر رو ببندم و یه سری دنیای نود دات جی اس هم بزنم!

شاد باشید دوستان، شادِ شادِ شاد.

قربان شما، آمیرزا

 

پی‌نوشت: بعد از نوشتن این نوشته متوجه شدم به تازگی یه میکرو-فریمورک مبتنی بر لاراول منتشر شده، به اسم Lumen که فوالعاده پرفرمنس خوبی داره و Request per Second بالایی داره. اگه دوست دارید از لاراول استفاده کنید اما دغدغه‌ی مصرف بالاش رو دارید، بهتون توصیه می‌کنم از Lumen استفاده کنید. چیز خوبیه و امکانات خوبی هم داره.

آمیرزا

یه برق‌خونده‌ی علاقه‌مند به برنامه‌نویسی

24 دیدگاه برای “کدایگنایتر یا لاراول؟ (یا به قول فرنگی­ها Laravel‌ vs CI)

  1. سلام آمیرزای عزیزم
    مطلبت بسیار جالب خوندنی و کامل بود. ممنونم از این مقاله و امیدوارم بتونم همسفر خوبی برات باشم یا حداقل سفرنامه هات بخونم و ازشون لذت ببرم.
    به امید موفقیت بیشتر و روزافزون

    1. قربان تو مجتبی جان،
      هر کی ندونه شما که خوب میدونی همه ی این سفرها و یادگیری ها به خاطر ایده های خوب شماست که لطف میکنی و با ما درمیون میذاری …
      امیدوارم هرچه زودتر بتونیم ایده ی خوبت رو عملی کنیم.

  2. بسیار عالی بود. بد از کمی کار با کامپوننت های جوملا دنبال یه فریموورک جدید بودم تا رسیدم به لاراول و کدایگنایتر. لاراول خوبه اینم نیازی به گفتن نداره که انتخاب درصد زیادی از برنامه ویس ها هست اما مهمترین دلیلی که باعث شد تصمیم بگیرم فعلا با کدایگنایتر ادامه بدم اینه که اولا واقعا یادگیریش آسونه و دوم اینکه وافعا آسونه!

    انشالا در اینده مثل شما مام سری به دنیای لاراول زدیم اما فعلا کدیگنایتر خوب جواب میده به خصوص اینکه بعد از انتقالش به خونه جدیدش و انتشار نسخه سه کمی بهتر هم شده.

    1. صد البته … کدایگنایتر حرف نداره … مخصوصا مستنداتش … خیلی خیلی مستنداتش خوب و کامل هستن. از نظر کار کردن هم درسته، کدایگنایتر یادگیریش راحت تره. درضمن آدم میتونه به راحتی همه کدهای هسته ش رو هم بخونه و راحت متوجه بشه و راحت هم ویرایششون کنه درصورت نیاز. یکی از مزایای مهم کدایگنایتر هم سیستم بنچمارک و پروفایلر بی درد سرشه، خیلی راحت میشه راهش انداخت و ازش استفاده کرد.
      در هر صورت، لاراول را حلاوتی دگر است 😀 … حتما بعد از کار با کدایگنایتر یه سری به لاراول هم بزن. 😉

    1. حقیقتش همون اول که می‌خواستم یه فریمورک انتخاب کنم، Yii رو هم مدنظر داشتم، ولی مرور کردن مستندات و امکاناتش اون موقع نتونست نظر من رو جلب کنه. الان نمی‌دونم چه تغییراتی کرده و تو چه وضعیتی قرار داره.

  3. سلام حاجی
    به تازگی با سایت وزینتون آشنا شدم و البته دارم حال میکنم 🙂
    میدونی چرا ؟
    چون خودم هم ارشد برق(مخابرات) میخونم و همیشه برام سوال بود که من چرا این جوری هستم.
    اگه رشته ام برقه چرا عاشق برنامه نویسی وب هستم و بعضا هم متلک میشنوم از دوستان .خخخخخ
    در کل برام اثبات شد که میشه یه مهندس برق بود و در عین حال برنامه نویس وبسایت.

    خلاصه اینکه تشکر

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

    1. ممنون از لطفت محسن جان،
      به گمونم درست سوالت رو متوجه نشدم،
      در هر صورت، اگه منظورت اینه که این‌ها رو تو دو پروژه‌ی مجزا مثلا روی یه سرور مجازی استفاده کنی، باید بگم که میشه، میتونی virtual host راه بندازی و هر چندتا پروژه که سرورت ظرفیت داشته باشی رو اجرا کنی.
      اما اگه منظورت اینه که یه پروژه رو با دو تا فریمورک انجام بدی، باید بگم به نظرم این کار اشتباهه! البته بستگی به پروژه و نیازهات هم داره. به صورت کلی گفتم.

  4. به جهانی ندهم عالم کدایگنایتر را که جهان غم کده‌ای در نظر کدایگنایتر است :-)‌

    {به جهانی ندهم عالم درویشی را که جهان غم کده‌ای در نظر درویش است}

    اینقدر فریمورک و تکنولوژی زیاد شده ادم سر هزار راهی گیر میکنه !

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

  6. سلام و تشکر از مطالب مفیدتون آمیرزا . ببخشید که من ی خرده دیر به این مطلب بر خوردم و نظر گذاشتم .
    ی سوال داشتم ممنون میشم پاسخ بدید . من میخوام ی سایت اشتراک گذاری ویدئو راه بندازم و از ی فرم ورک استفاده کنم . آیا کد ایگنایتر کار منو راه میندازه ؟؟؟؟

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *