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

ساختار پروژه : کاربردها، ماژول ها و فعالیت ها

در سیمفونی یک پروژه مجموعه ای از سرویس ها و فعالیت های در دسترس تحت یک نام دامنه است.

در داخل یک پروژه، عملیات یا فعالیت ها از نظر منطقی در کاربردها(application  هاا)  دسته بندی می شوند. یک برنامه کاربردی می تواند بصورت مستقل از دیگر پروژه ها اجرا شود.

در بیشتر مواقع، پروژه دارای دو کاربرد خواهد بود، یکی front-office و دیگری back-office  که هر دو از یک بانک اطلاعاتی مشترک استفاده می کنند. با این حال می توان یک پروژه شامل چندین سایت کوچکتر داشت که هر کدام از سایت ها بتوانند بصورت یک کاربرد جداگانه ظاهر شوند.

توجه داشته باشید که لینک های بین کاربرد ها به صورت مطلق و جدا از چارچوب سیمفونی ایجاد خواهد شد.

هر کاربرد مجموعه ای از یک یا چند ماژول(module) است، یک ماژول معمولاً شامل یک صفحه یا مجموعه ای از چند صفحه است که با هم هدف و موضوع مشترکی را ارائه می کنند. بعنوان مثال در یک کاربرد ممکن است ماژول هایی مثل home ، articles ، help ، shopping Cart، account و … داشته باشید.

ماژول ها شامل عملیات یا فعالیت ها (actions) هستند. پس عملیات مختلف می توانند در یک قالب یک ماژول ارائه شوند. بعنوان مثال ماژول Shopping Cart می تواند دارای اعمال add، show ، update و … باشد.

معمولاً اعمال می توانند با یک فعل توصیف شوند. کار با اعمال مشابه کار کردن با صفحات در یک کاربرد وب کلاسیک است. اگر چه دو عمل می توانند در یک صفحه باشند. (مثلاً اضافه کردن کامنت برای یک پست در بلاگ، که هم لیست کامنت ها را نشان می دهد و هم امکان اضافه کردن کامنت جدید دارد).

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

در شکل زیر سازماندهی ساده برای یک پروژه .بلاگ نشان داده شده که می تونید از آن به عنوان یک الگو استفاده کنید:

ساختار پروژه در سیمفونی

ساختار درختی فایل ها در سیمفونی

همه پروژه های وب معمولاً نوع یکسانی از محتوا را به اشتراک گذاشته و دارای قسمت های مشابه هم هستند:

  1. یک بانک اطلاعاتی مثل MySQL یا PostrgeSQL
  2. فایل های ایستا (HTML ، تصاویر، فایل های جاوااسکریپت و …)
  3. فایل های آپلود شده توسط کاربران و مدیران سایت
  4. کلاس ها و کتابخانه های PHP
  5. کتابخانه های خارجی
  6. فایل ها دسته ای (اسکریپت هایی که از خط فرمان اجرا می کند)
  7. فایل ها ثبت وقایع (log)
  8. فایل های پیکربندی

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

ساختار درختی ریشه پروژه در سیمفونی

در زیر ساختار درختی ریشه یک پروژه در چارچوب سیمفونی را می بینید:

ساختار درختی ریشه پروژه در سیمفونی

فهرست های مهم موجود در ریشه پروژه عبارتند از:

apps: دارای پوشه هایی برای هر کدام از کاربردها پروژه است.

cache : شامل نسخه کش شده پیکربندی است. از کش برای پاسخگویی سریعتر به درخواست های کاربران استفاده می شود. هر کاربرد دارای یک زیرفهرست در ایجا است که شامل فایل ها HTML و PHP از قبل پردازش ده است.

config: پیکریندی عمومی پروژه را نگهداری می کند.

data: فایل های داده ای پروژه را نگه می دارد. مثلاً شمای بانک اطلاعاتی که یک فایل SQL بوده و بانک اطلاعاتی را می سازد یا فایل های بانک اطلاعاتی SQLight

doc: مستندات پروژه را نگه می دارد، این شامل مستندات خودتان و مستندات ساخته شده توسط PHPdoc است.

lib: به کلاس ها و کتابخانه های خارجی اختصاص دارد. در این پوشه می توانید کدهایی را قرار دهید که نیاز است در بین همه کاربردها بصورت اشتراکی استفاده شوند. زیرپوشهmodel یک مدل از اشیای پروژه را نگه می دارد.

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

plugins : افزونه های نصب شده در کاربرد را نگه می دارد.

test: تست های عملکردی و واحد نوشته شده را نگه می دارد. در طول نصب پروژه، سیمفونی بصورت خودکار تست هایی را اضافه می کند.

web: فهرست ریشه وب سرور است که فایل های قابل دسترس از اینترنت در این فهرست قرار داده می شوند.

در این جلسه ساختار کلی پروژه و ساختار درختی فایل های فهرست ریشه پروژه را بررسی کردیم، در آینده جزئیات بیشتری از ساختار پروژه را آموزش خواهیم داد.