سلام
وقت بخیر
یک سوال در رابطه با لایههای معماری نرم افزار و دیزاین پترن ریپازیتوری داشتم :
من تا وقتی که فقط با معماری mvc پروژه میزدم هیچ مشکلی نداشتم
میدونستم که مدل شامل هر Entity من میشه که وظیفش کار با دیتابیس اون موجودیت از پروژه من با دیتابیس بود
یعنی یه کلاس کار با دیتابیس میساختم حالا این میتونست یه ORM آماده مثل Eloquent هم باشه
بعد هر مدل من از اون کلاس استفاده میکرد و صرفا اسم جداول مربوط به اون Entity توی دیتابیس رو مشخص میکرد و من به جای اینکه مستقیما با خود اون کلاسه دیتابیس کار کنم و هی مجبور باشم اسم دیتابیس و چیزای مربوط به اون موجودیت رو بدم یکبار توی model اون بخش تغییر میدادم و ازش استفاده میکردم
در واقع modelهای من ارث بری میکردند از اون کلاس کلی
اما وقتی رفتم سر وقت دیزاین پترن Repository و فهمیدم که یک لایه ای بین اون persistence و مدل ما قرار میگیره و در واقع داده رو از persistence میگیره و تحویل مدل میده کلا ذهنم به هم ریخته
البته اینو بگم که میدونم هدف کلی ریپازیتوری اینه که ما عملیات کار با دیتابیس کلا جدا از مدل و لایههای دیگه باشه و بعدا ما خواستیم مثلا دیتابیس رو تغییر بدیم فقط کلاسهای مربوط به ریپازیتوری رو تغییر بدیم
اما الان نمیدونم چرا ما مستقیما از ریپو استفاده نمیکنیم و داریم دوباره داده رو میدیم به مدل و از اون میگیریم
اصلا توی این معماری وظیفه مدل چیه ؟
و اینکه اصلا میشه ما ریپازیتوری رو توی وردپرس به شکلی پیاده سازی کنیم که در کنار wpdb از eloquent هم بتونیم استفاده کنیم ؟
اگر آره میشه یک روند کلی از پیاده سازیش بگید که باید به چه شکلی باشه ؟