فریمورک سیمفونی
به عنوان مثال Laravel خود به تنهایی فریمورک قدرتمند و بزرگی است که در بخشهایی از برخی از امکانات سیمفونی استفاده میکند. حتی zend framework که بزرگترین فریمورک موجود برای زبان php است و توسط شرکت توسعه دهنده php یعنی شرکت zend توسعه داده میشود به پیشنهاد توسعه دهندگان اصلی خود از بخشی از سیمفونی مانند Doctrinee بهره میبرد.
فریمورک سیمفونی
متوجه شدید در واقع symfony مجموعهای از libraryهایی است که هرکدام وظیفه مشخصی را انجام میدهند. به همین خاطر میشود فقط از برخی از کتابخانههای symfony استفاده کرد.

اجزای تشکیل دهنده فریمورک سیمفونی
به صورت خلاصه اجزای تشکیل دهنده فریمورک Symfony به شرح زیر هستند:
- مسیریابی (Routing): این بخش مسولیت مسیریابی و انتخاب controller مختص هر وظیفه را دارد. مثلا در routing مشخص میکنیم که اگر کاربر در مرورگر خود آدرس /aboutus را به منظور دستیابی به صفحه “درباره ما” درخواست داد؛ باید این درخواست به controller مخصوص نمایش صفحه aboutus رجوع داده شود.
- موجودیت (Entity): این بخش مسولیت سرو سامان بخشیدن به ارتباطات دیتابیس را بر عهده دارد. مثلا در این بخش روابط موجود بین جدول های بانک اطلاعاتی مشخص میشود. در این بخش نام هر فیلد، محدودیتهای نوع و طول آنها و امور دیگر مشخص میشود.
- View: در این بخش فایلهای مربوط به نمایش اطلاعات با هم جمع شدهاند. البته این بخش فقط حاوی اسکلت بندی بخش نمایش است، چون داده ها باید از دیتابیس دریافت، تبدیل به شی و در این بخش استفاده شوند.
- Controller: اصلیترین بخش هر برنامهای در symfony همین بخش است. routing بر اساس ورودی، controller خاص را انتخاب میکند، از این به بعد کل وظایف با controller است و کار با routing تمام میشود. Controller پس از دریافت ورودیها و انجام پردازشهای مورد نظر و یا حتی دریافت اطلاعات از model خروجی مناسب را برای نمایش آماده و نتیجه را به کاربر نمایش میدهد.
- Form: این بخش فرمهای مورد استفاده در برنامه را ذخیره میکند. البته استفاده از این بخش و یا حتی بخش view اجباری نیست ولی کنار گذاشتن آنها با ساده سازی فرایندها و هدف اصلی استفاده از فریمورک منافات دارد.
برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]



















سرعت Symfony نسبت به فریمورکهای سبکتر مثل Slim چطور است؟
مقایسهی مناسبی نیست.
آیا در Symfony استفاده از Twig اجباری است یا میتوان از موتور قالب دیگری استفاده کرد؟
خیر، استفاده از Twig در Symfony اجباری نیست. Twig به صورت پیشفرض با Symfony یکپارچه شده و انتخاب اصلی برای موتور قالب است، اما شما میتوانید هر موتور قالب دیگری را استفاده کنید، مثل Blade، Smarty یا حتی PHP templates ساده. کافیست پکیج مربوط به موتور قالب را نصب کرده و در services.yaml یا کانفیگ رندر خود آن را معرفی کنید. حتی میتوانید Symfony را طوری پیکربندی کنید که هیچ موتور قالبی استفاده نشود (مثلاً در پروژههای API).
بخش Entity در Symfony آیا فقط با Doctrine کار میکند یا گزینههای دیگری هم دارد؟
بهطور پیشفرض، Symfony با Doctrine ORM و Doctrine DBAL کار میکند چون این ابزارها بهشدت با اکوسیستمش سازگارند. اما اجباری به استفاده از Doctrine نیست. شما میتوانید از ORMهای دیگری مثل Propel، Eloquent (لاراول) یا حتی PDO مستقیم استفاده کنید. بخش “Entity” در مستندات معمولاً به Doctrine Entity اشاره دارد، اما این یک قرارداد است نه محدودیت فنی.
آیا میتوان فقط از یک یا دو کتابخانه Symfony در یک پروژه مستقل استفاده کرد؟
بله، کاملاً. Symfony یک فریمورک کامل است اما در واقع از مجموعهای از کامپوننتها تشکیل شده. شما میتوانید هر کامپوننت را بهصورت مستقل در پروژههای PHP استفاده کنید، حتی اگر کل Symfony را نصب نکرده باشید. مثلاً فقط HttpFoundation و Routing یا فقط EventDispatcher را استفاده کنید. این انعطاف یکی از ویژگیهای مهم Symfony است.
آیا یادگیری سیمفونی برای کسانی که لاراول بلدند آسانتر است؟
بله، نسبتاً آسانتر خواهد بود. لاراول از بسیاری از مفاهیم و حتی برخی کامپوننتهای Symfony استفاده میکند (مثل HttpFoundation، Routing، Console). اگر با ساختار MVC، Routing، Middleware و Service Container در لاراول آشنا هستید، یادگیری Symfony سریعتر میشود. تفاوت اصلی این است که Symfony معمولاً کانفیگمحور و انعطافپذیرتر است، ولی لاراول بیشتر روی کنوانسیون و سادهسازی تمرکز دارد.