Symfony اساسا مجموعه ای از اجزا و بسته نرم افزاری(boundle)  با کیفیت بالا است. اجزاء مجموعه ای از کلاس هایی هستند که قابلیت تک هسته ای را ارائه می دهند. به عنوان مثال، اجزای Cache قابلیت های حافظه پنهان را فراهم می کند که می تواند به هر برنامه افزوده شود. اجزا بلوک های سازنده ی یک برنامه کاربردی Symfony هستند. Symfony دارای بیشتر از ۳۰ کامپوننت با کیفیت بالا است که در بسیاری از چارچوبهای PHP مانند Laravel، Silex و غیره استفاده می شود.

بسته های نرم افزاری(Boundle ها) مشابه پلاگین ها بوده اما برای ایجاد و استفاده راحت تر هستند. در واقع، یک برنامه Symfony خود یک بسته نرم افزاری است که از بسته های دیگر تشکیل شده است. هر بسته نرم افزاری می تواند هر تعداد از مولفه های Symfony و همچنین اجزای طرف ثالث برای ارائه ویژگی هایی از قبیل Webframework، دسترسی به پایگاه داده و غیره استفاده کند. web-framework هسته Symfony  یک بسته نرم افزاری است که FrameworkBundle گفته می شود و دارای نام FrameworkExtraBundle که گزینه های پیچیده تر برای نوشتن یک برنامه وب را فراهم می کند.

رابطه بین کامپوننت، بسته نرم افزاری و برنامه سیمفونی در نمودار زیر مشخص شده است.

 

معماری و ساختار سیمفونی

چارچوب وب

سیمفونی عمدتا برای ساخت برنامه با کیفیت بالا با سهولت نسبی طراحی شده است. این فریمورک گزینه های مختلفی را برای نوشتن انواع مختلف برنامه های وب از وب سایت ساده گرفته تا سرویس های پیشرفته REST فراهم می کند. سیمفونی چارچوب وب را با کمک بسته های (Boundle) مجزا فراهم می کند. بسته های نرم افزاری مورد استفاده در چارچوب وب Symfony به شرح زیر است:

FrameworkBundle

FrameworkExtraBundle

DoctrineBundle

چارچوب وب سیمفونی مبتنی بر معماری Model-View-Controller (MVC) است. که Model ساختار نهادهای کسب و کار ما را نشان می دهد . View مدل ها را به بهترین حالت ممکن به کاربر نشان می دهد بسته به وضعیت. Controller تمام درخواست های کاربر را پردازش می کند، کار واقعی را با تعامل با Model انجام می دهد و در نهایت View را با اطلاعات لازم برای نمایش آن به کاربر فراهم می کند.

گردش کار در چارچوب سیمفونی

چارچوب وب Symfony تمامی ویژگی های سطح بالای مورد نیاز برای برنامه سازمانی را فراهم می کند. در زیر یک گردش عملی ساده از نرم افزار وب Symfony است.

معماری سیمفونی

گردش کار در چارچوب سیمفونی از مراحل زیر تشکیل شده است:

مرحله ۱ – کاربر درخواستی مشابه زیر را از طریق مرورگر ارسال می کند،

http://www.symfonyexample.com/index.

مرحله ۲ – مرورگر یک درخواست به سرور وب ارسال می کند و وب سرور آپاچی را فراخوانی می کند.

مرحله ۳ – وب سرور درخواست را به پی اچ پی زیر ارسال می کند و آن هم به نوبه خود آنرا به چارچوب وب Symfony ارسال می کند.

مرحله ۴ – HttpKernel جزء اصلی چارچوب وب Symfony است. HttpKernel کنترولر مربوط به درخواست داده شده را تشخیص داده و درخواست را به کنترل کننده منایب منتقل می کند.

مرحله ۵ – تمام منطق کسب و کار و پردازش های لازم در کنترلر قرار گرفته است.

مرحله ۶ – کنترل کننده با مدل ارتباط برقرار خواهد کرد که به نوبه خود با Datasource از طریق Doctrine ORM تعامل می کند.

مرحله ۷ – هنگامی که کنترل کننده فرایند را تکمیل می کند، یا خودش را پاسخ می دهد یا از طریق موتور View را تولید می کند و آن را به سرور وب ارسال می کند.

مرحله ۸ – در نهایت، پاسخ توسط مرورگر وب به مرورگر درخواستی ارسال خواهد شد.