سیمفونی
سیمفونی (به انگلیسی: Symfony) یک چارچوب نرمافزاری تحت وب متنباز است که برای ساختِ وبگاههای پویا بهکار میرود. این چارچوب که با زبان پیاچپی نوشته شدهاست، کار توسعهٔ نرمافزار را در سنجش با کدنویسی از آغاز شتاب میبخشد. این شتاببخشی توسط کتابخانههای این چارچوب انجام میشود که بسیاری از آنها کارهای رایج را بهسادگی انجام میدهند. این چارچوب بر اساس مدل معماری مدل-نما-کنترلگر (به انگلیسی: MVC) کار میکند.این چارچوب پیاده سازیهای شما را بر اساس بستههای (به انگلیسی: bundle) ایجاد کرده پیش خواهد برد و شما نیز میتواند از هزاران بسته نوشته شده متن باز دیگران در پروژه خود استفاده کنید. در ساختار اصلی این چاچوب پوشههای زیر را مشاهده می کنید :
<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/
نویسنده(های) اصلی | فابین پوتنسیر |
---|---|
توسعهدهنده(ها) | Symfony community |
انتشار ابتدایی | ۲۲ اکتبر ۲۰۰۵ |
انتشار پایدار | ۵.۱
۲۰۲۰/۰۵/۳۱ |
مخزن | |
نوشتهشده با | پیاچپی |
سیستمعامل | چندسکویی |
در دسترس به | پیاچپی |
گونه | چارچوب نرمافزاری تحت وب |
پروانه | پروانه امآیتی |
وبگاه |
که اجزای اصلی این چارچوب راتشکیل میدهد. پوشه app برای تنظیمات اصلی و بنیادی پروژه شماست، که شامل فایلهای مهم زیر است:
- app/AppKernel.php
- app/config/config.yml
- app/config/routing.yml
پوشه src شامل برنامه نوشته شده توسط شماست که درون خود بستههای ایجاد شده توسط شما را نگهداری میکند. vendor شامل بستههای متن باز دیگران برای استفاده شماست که شما همیشه امکان اضافه نمودن آنها را دارید و در آخر web شامل نحوه نمایش این چارچوب و همچنین شیوه نامه آبشاری، تصاویر، جاوا اسکریپت و این قبیل فایلهای پروژه شماست. این چارچوب بهطور پیشفرض از موتور قالب توئیگ (به انگلیسی: twig) پشتیبانی میکند و همچنین نگاشت رابطهای اشیا (به انگلیسی: ORM) آن داکترین (به انگلیسی: Doctrine) میباشد. وبگاه سیمفونی در ۱۸ اکتبر ۲۰۰۵ شروع به کار کرد. بسیاری از پروژههای بزرگ مانند سیستم مدیریت محتوا (به انگلیسی: CMS) دروپال(به انگلیسی: Drupal) از این چارچوب استفاده نمودهاند.
Symfony به صورت خلاصه از قسمتهای زیر تشکیل شده است:
- routing یا مسیر یابی: این بخش مسولیت مسیریابی و انتخاب controller مختص هر وظیفه را دارد. مثلاً در routing مشخص می کنیم که اگر کاربر در مرورگر خود آدرس /aboutus را به منظور دستیابی به صفحه "درباره ما" درخواست داد، باید این درخواست به controller مخصوص نمایش صفحه aboutus رجوع داده شود.
- entity: این بخش مسولیت سرو سامان بخشیدن به ارتباطات دیتابیس را بر عهده دارد. مثلاً در این بخش روابط موجود بین جدولهای بانک اطلاعاتی مشخص میشود. در این بخش نام هر فیلد، محدودیتهای نوع و طول آنها و امور دیگر مشخص میشود.
- view: در این بخش فایلهای مربوط به نمایش اطلاعات با هم جمع شدهاند. البته این بخش فقط حاوی اسکلت بندی بخش نمایش است، چون دادهها باید از دیتابیس دریافت، تبدیل به شی و در این بخش استفاده شوند.
- controller: اصلیترین بخش هر برنامهای در symfony همین بخش است. routing بر اساس ورودی، controller خاص را انتخاب میکند، از این به بعد کل وظایف با controller است و کار با routing تمام میشود. Controller پس از دریافت ورودیها و انجام پردازشهای مورد نظر یا حتی دریافت اطلاعات از model خروجی مناسب را برای نمایش آماده و نتیجه را به کاربر نمایش میدهد.
- form: این بخش فرمهای مورد استفاده در برنامه را ذخیره میکند. البته استفاده از این بخش یا حتی بخش view اجباری نیست ولی کنار گذاشتن آنها با سادهسازی فرایندها و هدف اصلی استفاده از فریم ورک منافات دارد.