سیمفونی ۵!! Symfony 5

سیمفونی ۵!! Symfony 5
  • Twitter logo
  • Facebook logo
  • LinkedIn logo

خبر خوشحال‌کننده برای هواداران و استفاده‌کنندگان زبان برنامه نویسی PHP، رونمایی از نسخه ۴ و ۵ فریم ورک سیمفونی است. در ادامه به توضیحِ این خبر خوشحال کننده خواهیم پرداخت، اما در ابتدا باید به تعریف فریم ورک و سابقه Symfony و موارد استفاده آن اشاره کنیم.

فریم ورک (Framework) چیست؟

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

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

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

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

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

در زمان عرضه فریم ورک‌ها PHP اولین انتشارها در نسخه 5 را سپری می‌کرد. این اولین بار برای زبان مشهور آن دوره (سال ۲۰۰۷) بود که مفهوم MVC و سپس Framework تعریف می‌شد و برنامه نویسان با اکراه، آشنا به استفاده از فریم ورک می‌شدند. بعضی از برنامه نویسان، متوجه علت ایجاد فریم ورک نبودند و نمی‌دانستند چرا باید از فریم ورک استفاده کرد، در حالی که یادگیری آن باعثِ هزینه ی زمان برای آن‌ها و پروژه‌هایشان است.

از اولین فریم ورک‌های عرضه شده در PHP می‌توان به موارد زیر اشاره کرد:

  1. Zend Framework
  2. Symfony Framework

تفاوت جالبی که درباره عرضه اولین فریم ورک‌های PHP وجود دارد آن است که شرکت عرضه کننده PHP یعنی Zend، اقدام به عرضه فریم ورک خود با عنوان شرکت Zend کرد، اما فریم ورک Symfony توسط شخص حقیقی و با کپی رایت آقای Fabien Potencier عرضه شد.

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

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

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

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

سیمفونی (Symfony) چیست؟

شاید آن زمان که Fabien Potencier برنامه نویس فرانسوی، در حال انتخاب اسم برای ساخته ی آینده خود بود، با تغییر هوشمندانه Symphony به Symfony، می‌خواست مفهوم یک سمفونی هماهنگ از مجموعه‌ای از ابزارها رو بیان کند که نسبت به حالت عادی خیلی سریع‌تر (اشاره به یک حرف کمتر نسبت به حالت اصلی) هم به نتیجه می‌رسد، را تداعی کند.

پاراگراف فوق، هیچ سندیت واقعی ندارد و تنها بیان‌گر نظر نویسنده این مطلب، شایان داورزنی، است

سیمفونی یک فریم ورک برای ساخت برنامه تحت وب (web base)، بر مبنای زبان برنامه نویسی PHP است. الگوی اصلی سیمفونی در برنامه نویسی فریم Spring MVC در زبان برنامه JAVA است. Symfony بر اساس اهداف زیر شکل گرفته است:

  1. Symfony با هدف تسریع کدنویسی و جلوگیری از تکرار کارهای متداول در برنامه نویسی ایجاد شده است. یکی دیگر از اهداف Symfony ساده سازی فرآیند نگه داری و توسعه کد است.
  2. Symfony با ارائه مکانیزم cache باعث بهبود عملکرد و سرعت برنامه‌ها می‌شود.
  3. Symfony با ارائه چندین پکیج امنیتی به حفاظت و امنیت مضاعف سایت و اپلیکیشن اینترنتی شما کمک می‌کند.
  4. Symfony با ارائه routing های بهبود یافته،  حتی برای زبان فارسی، به بهبود جایگاه پلتفرم اینترنتی شما و مارکتینگ دیجیتال شما کمک می‌کند

سیمفونی (Symfony) - ابزارهای همراه (Built-In)

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

  1. واسط کار با پایگاه داده به صورت شی‌گرا ORM (Object Relational Mapping): کتابخانه‌های Doctrine و Propel به عنوان واسط کار با پایگاه داده، در سیمفونی وجود دارد
  2. Template Engine: سیمفونی به طور پیش‌فرض از Twig استفاده می‌کند. Template Engine ها برای ساده کردن کدنویسی سمت Frontend، کاربرد دارد.
  3. Swift Mailer: کتابخانه ارسال و دریافت ایمیل با قابلیت تنظیم مشخصات از طریق فایل‌های YML
  4. Dependency Injector: امکان تزریق کتابخانه‌های وابسته، در کلاس‌ها مختلف
  5. PHPUnit ابزاری برای تست برنامه‌های نوشته شده و رفع ایراد آن‌ها
  6. معماری کلاس‌ها به صورت رویداد محور (Event Driven)

نکته جالب درباره سیمفونی این است که خود بر اساس فریم ورک Spring MVC در J2EE نوشته شده است و Doctrine که ORM اصلی Symfony محسوب می‌شود بر اساس Hibernate  که ORM نوشته شده برای J2EE است. در صورتی که برنامه نویس Symfony باشید و یک پروژه Spring MVC  را باز کنید، شباهت‌های زیادی بین نحوه کدنویسی و استفاده از توابع خواهید یافت

تغییرات Symfony4و5 نسبت به نسخه 3

۱) حجم سیمفونی ۴، نسبت به نسخه پیشین خود ۷۰% کمتر شده است

۲) در نسخه ۴ برای اولین بار مفهوم Flex و  Symfony Recipes عرضه شد. عرضه Flex باعث تقویت مکانیزه شدن نصب پکیج‌ها و کار کمتر برای برنامه نویس‌ها و خروجی بیشتر آن‌ها شده است.

Symfony Flex: یک راهکار برای مدیریت برنامه‌های نوشته شده با سیمفونی است

 Symfony Recipes: مجموعه‌ای از دستورالعمل‌های آماده و اتوماتیک برای اتصال فرآیندی مستقل به هسته سیمفونی یا به عبارت دیگر هر رِسِپی، پکیجی است که به تنهایی و مستقل می‌تواند بخشی از هر کسب‌وکار رو انجام دهد، اما قابلیت تلفیق با سایر پکیج‌ها در آن گنجانده شده است

۳) یکی از قابلیت‌ها بهبود یافته به معنای واقعی در سیمفونی ۴ و ۵، قابلیت autowire و auto register کتابخانه‌ها هستند. شما قادر خواهید بود با استفاده از این ویژگی، به راحتی پکیج‌ها خود را در سایر پکیج‌ها تزریق (Inject) کنید

۴) بهبود فرم‌ها و ORM

۵) بهبود Monolog و سیستم ذخیره لاگ

۶) افزودن Encore به منظور استفاده از Webpack

پرکاربردترین اپلیکیشن‌های نوشته شده با سیمفونی

  1. Laravel Framework (فریم ورک برنامه نویسی)
  2. Doctrine ORM
  3. Drupal (نرم افزار مدیریت محتوا)
  4. EZpublish (نرم افزار مدیریت محتوا)
  5. PHPBB (نرم افزار ساخت فروم و انجمن اینترنتی)
  6. Sylus (نرم افزار فروشگاه ساز)
  7. Bolt (نرم افزار مدیریت محتوا)
  8. برخی ماژول‌های Joomla
  9. برخی ماژول‌های Magento
  10. ORO CRM
  11. Typo3

Comments

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

Add new comment