سیمفونی

**سیمفونی**  یک چارچوب نرم‌افزاری تحت وب متن‌باز است که برای ساختِ وبگاه‌های پویا به‌کار می‌رود. این چارچوب که با زبان پی‌اچ‌پی نوشته شده‌است، کار توسعهٔ نرم‌افزار را در سنجش با کدنویسی از آغاز شتاب می‌بخشد. این شتاب‌بخشی توسط کتابخانه‌های این چارچوب انجام می‌شود که بسیاری از آن‌ها کارهای رایج را به‌سادگی انجام می‌دهند. این چارچوب بر اساس مدل معماری مدل-نما-کنترل‌گر  کار می‌کند. این چارچوب پیاده‌سازی‌های شما را بر اساس بسته‌های  ایجاد کرده پیش خواهد برد و شما نیز می‌تواند از هزاران بسته نوشته شده متن باز دیگران در پروژه خود استفاده کنید. در ساختار اصلی این چاچوب پوشه‌های زیر را مشاهده می‌کنید:

```yml
<your-project>/
├─ app/
│  └─ config/
│     ├─ config.yml
│     ├─ config_dev.yml
│     ├─ config_prod.yml
│     ├─ config_test.yml
│     ├─ parameters.yml
│     ├─ parameters.yml.dist
│     ├─ routing.yml
│     ├─ routing_dev.yml
│     └─ security.yml
├─ src/
├─ vendor/
└─ web/
```

که اجزای اصلی این چارچوب راتشکیل می‌دهد. پوشه app برای تنظیمات اصلی و بنیادی پروژه شماست، که شامل فایل‌های مهم زیر است:
# app/AppKernel.php
# app/config/config.yml
# app/config/routing.yml

پوشه src شامل برنامه نوشته شده توسط شماست که درون خود بسته‌های ایجاد شده توسط شما را نگهداری می‌کند. vendor شامل بسته‌های متن باز دیگران برای استفاده شماست که شما همیشه امکان اضافه نمودن آن‌ها را دارید و در آخر web شامل نحوه نمایش این چارچوب و همچنین شیوه نامه آبشاری، تصاویر، جاوا اسکریپت و این قبیل فایل‌های پروژه شماست.
این چارچوب به‌طور پیش‌فرض از موتور قالب توئیگ  پشتیبانی می‌کند و همچنین نگاشت رابطه‌ای اشیا  آن داکترین  می‌باشد. وبگاه سیمفونی در ۱۸ اکتبر ۲۰۰۵ شروع به کار کرد.
بسیاری از پروژه‌های بزرگ مانند سیستم مدیریت محتوا  دروپال از این چارچوب استفاده نموده‌اند.

Symfony به صورت خلاصه از قسمت‌های زیر تشکیل شده‌است:
# routing یا مسیر یابی: این بخش مسولیت مسیریابی و انتخاب controller مختص هر وظیفه را دارد؛ مثلاً در routing مشخص می‌کنیم که اگر کاربر در مرورگر خود آدرس /aboutus را به منظور دستیابی به صفحه «دربارهٔ ما» درخواست داد، باید این درخواست به controller مخصوص نمایش صفحه aboutus رجوع داده شود.
# entity: این بخش مسولیت سرو سامان بخشیدن به ارتباطات دیتابیس را بر عهده دارد؛ مثلاً در این بخش روابط موجود بین جدول‌های بانک اطلاعاتی مشخص می‌شود. در این بخش نام هر فیلد، محدودیت‌های نوع و طول آن‌ها و امور دیگر مشخص می‌شود.
# view: در این بخش فایل‌های مربوط به نمایش اطلاعات با هم جمع شده‌اند. البته این بخش فقط حاوی اسکلت‌بندی بخش نمایش است، چون داده‌ها باید از دیتابیس دریافت، تبدیل به شی و در این بخش استفاده شوند.
# controller: اصلی‌ترین بخش هر برنامه‌ای در symfony همین بخش است. routing بر اساس ورودی، controller خاص را انتخاب می‌کند، از این به بعد کل وظایف با controller است و کار با routing تمام می‌شود. Controller پس از دریافت ورودی‌ها و انجام پردازش‌های مورد نظر یا حتی دریافت اطلاعات از model خروجی مناسب را برای نمایش آماده و نتیجه را به کاربر نمایش می‌دهد.
# form: این بخش فرم‌های مورد استفاده در برنامه را ذخیره می‌کند. البته استفاده از این بخش یا حتی بخش view اجباری نیست ولی کنار گذاشتن آن‌ها با ساده‌سازی فرایندها و هدف اصلی استفاده از فریم ورک منافات دارد.

## منابع
https://web.archive.org/web/20180223023306/http://doc.s4e.ir/

رده:چارچوب‌های پی‌اچ‌پی
رده:چارچوب‌های نرم‌افزاری تحت وب
رده:نرم‌افزارهای آزاد نوشته‌شده با پی‌اچ‌پی
رده:نرم‌افزارهای دارای اجازه‌نامه ام‌آی‌تی