هاست لینوکس

آخرین بسته‌ی MyBB: نسخه‌ی 1.8.27 MyBB منتشر شد


امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
سردرگمی میان Frameworkهای PHP – کدام یک را باید برگزید؟
#1
Framework های بسیار زیادی برای PHP نوشته شده است که هر کدام ویژگی‏ها و امکانات خاص خودشان را دارد. برای برگزیدن یکی از آنها، نیاز به بررسی همه و آشنایی نسبی با آنها دارد. من مدتها بود که داشتم با اینها بازی می‏کردم و ویژگی‏ها و چگونگی کار با هر کدام را می‏آزمودم. در این نوشته پنج Framework مشهور را برگزیده‏‎ام و به بررسی کلی هر کدام از آنها خواهم پرداخت. این بررسی می‏خواهد یک Overview کلی از هر کدام را نشان دهد تا برای دیگران، انتخاب آسان‏تر شود. Framework برگزیده خودم هم در این نوشته مشخص خواهد شد و دلایل گزینش آن را نیز می‏توانید بخوانید.



Zend Framework

طبیعتا Zend Framework سرشناس‏ترین و بالاترین گزینه ما است؛ چون که Zend، شرکتی که پشت PHP است آن را طراحی و تولید کرده است. این Framework امکانات زیادی داشته و بسیار قدرتمند است و هر آن چه که برای تولید یک پروژه بزرگ لازم داشته باشید در خود دارد. License آن هم BSD است که به شدت انعطاف پذیر بوده و شرط می‏کند که در صورت توسعه آن باید کد تولید شده کاملا انعطاف پذیر باشد.

همچنین این Framework از PHP 4 پشتیبانی نمی‏کند و تنها در PHP 5 اجرا می‏شود. با توجه به تلاشهای زیاد اخیر برای ارتقاء به PHP 5 در سرورها شاید این مسئله کمتر به چشم بیاید ولی به هر روی ناهماهنگی با یکی از گسترده‏ترین نسخه‏های PHP در این Framework به چشم می‏خورد.

این Framework و کامپوننت‏های فراوان آن برای پروژه‏های خیلی خیلی بزرگ مناسب است ولی برای خیلی از پروژه‏ها چیزهایی را ارائه می‏کند که خیلی بیشتر از نیاز آنها است و همچنین به طور نسبی از پیچیدگی‏هایی برخوردار است. خیلی از چیزهایی که Zend Framework داره، خیلی کم کاربرد است. در هر حال، گزینه برگزیده من Zend Framework نیست. به باور من Zend Framework خیلی خوش دست نیست و یاد گرفتن آن زمان زیادتری می‏برد و زمان زیادی لازم هست تا بفهمید دقیقا چگونه کار می‏کند. این پیچیدگی مخصوصا اگر بخواهید با یک تیم کار کنید، سبب می‏شود تا زمان زیادی برای آموزش تیم از بین برود. همچنین این Framework شما را به پیروی از MVC اجبار نمی‏کند. این مساله اگر چه از یک سو سبب انعطاف‏پذیری می‏شود ولی از سوی دیگر هم ممکن است کار شما را غیر استاندارد کند.

بد نیست بدانید که در بین سایتهای ایرانی، سایت مشهور کلوب با کمک Zend Framework درست شده است.


CakePHP


یکی از مشهورترین و محبوب‏ترین Frameworkها و یکی از بهترین برابرهای Rails در PHP به شمار می‏آید. از MVC کامل پشتیبانی می‏کند. کاربران خیلی زیاد و فعالی دارد که ویژگی مهمی به حساب می‏آید. اگر چه من اصلا از Mambo خوشم نمی‏آید ولی این CMS محبوب Mambo هم قرار است در نسخه‏های آینده از CakePHP استفاده کند.
اما این سیستم دو تا اشکال کوچک هم دارد. یکی این که بیش از اندازه کند است (برای خواندن گزارش یک Benchmark خوب بین CakePHP، Zend Framework و CodeIgniter اینجا را ببینید). این مساله در صورتی که هزینه سرور برای شما اهمیت داشته باشد، خودش را بیشتر نشان می‏دهد. دوم این که اسامی کلاسهایی CakePHP خیلی عمومی طراحی شده است. برای نمونه کلاس Database که اگر شما هم کلاس مشابهی داشته باشید، سبب ایجاد ناهماهنگی در کد شما می‏شود و به طور کلی چنین اسم‏گذاری و به کار نگرفتن پیشوند مناسب مانند Cake سبب بدبینی نسبی من به طراحی این سیستم شده است.
همچنین ORMی که در CakePHP طراحی شده است، توارث را پشتیبانی نمی‏کند و به باور من چندان استاندارد نیست. (با Hackهایی می‏توان مشکل توارث ORM در CakePHP حل کرد. در این باره رک: Kelnishi.com)

ولی به طور کلی نصب CakePHP خیلی ساده است و راه انداختن اولیه سایت باهاش کار ساده و آسانی است. بر خلاف Zend Framework که نمی‏دانستید از کجا باید آغاز کنید، در CakePHP خیلی سریع می‏توانید یک سایت ساده راه بیاندازید. ولی انجام کارهای پیشرفته‏تر به دلیل نبودن مستندات کافی و راهنماهای مناسب کمی با CakePHP دشوار است. در هر حال گزینه انتخابی من CakePHP هم نیست.

برای خواندن یک آموزش فارسی خوب برای کار با این برنامه رک : الوان وب


Prado

از همه گزینه‏های دیگر متفاوت است. بر پایه MVC درست نشده است. طراح Prado این کار را برای پروژه دکترایش انجام داده است و در طراحی آن Delphi را مد نظر داشته و تلاش کرده تا یک Framework کاملا Object Oriented و Event Driven درست کند. اگر با ASP.NET کار کرده باشید، Prado را خیلی مشابه با آن خواهید یافت. در Prado همه چیز حتی یک Label و Button هم Object است که Propertyها و Eventهای خاص خودش را دارد. همچنین زبانی شبیه به HTML برای طراحی ظاهر صفحات دارد (دقیقا شبیه به ASP.NET و Tagهای asp: این زبان)
من اگر چه ASP.NET را دوست دارم و باهاش کار هم می‏کنم و اگر چه فکر می‏کنم Prado سیستم خیلی قشنگ و تمیزی است ولی Prado هم گزینه برگزیده من نیست؛ چون پشتیبانی یک سیستم از MVC برایم اهمیت زیادی دارد.

CodeIgniter
این Framework خیلی شبیه به CakePHP و از آن ساده‏‎تر و کوچکتر است و به همین خاطر هم از لحاظ سرعت از CakePHP خیلی بهتر است ولی خوب به همان اندازه هم امکانات کمتری دارد. این Framework شما را مجبور به پیروی کامل از MVC نمی‏کند، بنابراین برای یادگیری نوآموزان بهتر است. از Ajax هم مستقیما پشتیبانی نمی‏کند. ولی Code Igniter ویژگی‏های خوبی هم دارد. این Framework در PHP 4 هم کار می‏کند و از لحاظ سبک برنامه‏نویسی به سبک برنامه‏نویسی PHP 4 نزدیک است. به همین خاطر برای Port کردن کدهای قدیمی به یک Framework گزینه مناسبی است. همچنین دارای Community بزرگی است و کامپوننتها و مثالهای فراوانی برایش پیدا می‏شود. این Framework هم همانند CakePHP گزینش من نیست.



symfony
این Framework امکانات بسیار زیادی دارد و ماژول‏های جداگانه را برای انجام کارهای خودش به کار می‏گیرد: مانند DB Layer که با امکانات زیاد خودش واقعا لایه بانک اطلاعاتی شما را به بهترین شکل پشتیبانی می‏کند و امکان نوشتن برنامه مستقل از بانک اطلاعاتی را به شما می‏دهد. (اگر چه این ویژگی در Frameworkهای دیگر هم هست).
برای انجام پروژه‏های بزرگ symfony به خاطر امکانات زیادش، گزینه خیلی خوبی است ولی با این حال، پیچیدگی‏های Zend Framework را هم ندارد. این Framework هم تنها بر روی PHP 5 کار می‏کند. License آن هم MIT است که License خوب و انعطاف‏پذیری به حساب می‏آید. همچنین این Framework به خوبی AJAX را پشتیبانی می‏کند و امکاناتی برای ساختن صفحات Admin سایت دارد که کار طراحی بخش مدیریتی سایت را خیلی آسان می‏کند.

سیمفونی از ORM مشهوری به نام Propel بهره می‏گیرد که به باور من سیستم بسیار قدرتمندی است. اگر چه در CakePHP هم ORM هست ولی در آن جا از یک سیستم داخلی استفاده شده است. به کار گیری یک ORM بیرونی سبب افزایش سرعت توسعه سیمفونی شده است؛ چون که Propel سیستم خیلی مشهوری بوده و به طور عادی خودش در حال توسعه هست. این مساله همچنین هوشمندی طراحان سیمفونی را نشان می‏دهد.

خوب حدس زدنش سخت نیست. Framework برگزیده من symfony است. طراحی دقیق و محکم، سرعت مناسب، امکانات خیلی زیاد، مستندات و Community بزرگ آن، وجود ویژگی Admin Generator و سیستم کنترل دسترسی که سبب می‏شود من بتوانم در زمان طراحی صفحات سایت به مسائل مهمتر و افزودن ویژگی‏های اصلی بپردازم، از دلایل این گزینش من است.
پاسخ
 سپاس شده توسطMSTF (۱۳۹۱/۱/۲۲، ۰۸:۵۰:۵۵ صبح) ، Mohammad.T (۱۳۹۱/۱/۲۲، ۰۸:۵۴:۴۲ صبح) ، mahpishoni (۱۳۹۱/۱/۲۲، ۱۸:۲۷:۱۲ عصر)
#2
سپاس آقای خوشنویس!
معلومات مفیدی را ارائه نمودید. امید که دوستان به مزیت استفاده از فرم ورک بیشتر پی ببرند و واقعا کارکردن با فرم ورک هم جذابتر، سریعتر و با نتیجه بهتر است.

من خودم میخواستم کارم را با cakephp شروع کنم اما بطور تصادفی با فرم ورک جدید Yii که تازه پا به عرصه وجود نهاده و طرفداران و عاشقان زیادی هم پیدا کرده آشنا شدم و نظرم عوض شد.

بعد از جمع آوری آموزش ها و مطالب مفید در باره yii تصمیمم بر این است که کارم را با آن شروع کنم.

این را بخاطری گفتم که دوستان با نام این فرم ورک هم آشنا شوند و در باره آن معلومات بگیرند.
پاسخ
#3
متشکرم دقیقا من هم در حال جمع آوری معلومات هستم با تشکرHeart
پاسخ
 سپاس شده توسطMSTF (۱۳۹۱/۱/۲۲، ۰۹:۴۵:۱۵ صبح) ، شماره مجازی (۱۴۰۱/۸/۲۶، ۰۱:۵۸:۰۵ صبح) ، گراف مسنجر (۱۴۰۱/۱۰/۳، ۰۴:۱۹:۵۰ صبح)


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان