سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Deleted
الگوی ریپازیتوری
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۵ شهریور ۱۳۹۸

سلام

وقت بخیر

یک سوال در رابطه با لایه‌های معماری نرم افزار و دیزاین پترن ریپازیتوری داشتم :

 

من تا وقتی که فقط با معماری mvc پروژه میزدم هیچ مشکلی نداشتم
میدونستم که مدل شامل هر Entity من میشه که وظیفش کار با دیتابیس اون موجودیت از پروژه من با دیتابیس بود
یعنی یه کلاس کار با دیتابیس میساختم حالا این میتونست یه ORM آماده مثل Eloquent هم باشه
بعد هر مدل من از اون کلاس استفاده میکرد و صرفا اسم جداول مربوط به اون Entity توی دیتابیس رو مشخص میکرد و من به جای اینکه مستقیما با خود اون کلاسه دیتابیس کار کنم و هی مجبور باشم اسم دیتابیس و چیزای مربوط به اون موجودیت رو بدم یکبار توی model اون بخش تغییر میدادم و ازش استفاده میکردم
در واقع model‌های من ارث بری میکردند از اون کلاس کلی

اما وقتی رفتم سر وقت دیزاین پترن Repository و فهمیدم که یک لایه ای بین اون persistence و مدل ما قرار میگیره و در واقع داده رو از persistence میگیره و تحویل مدل میده کلا ذهنم به هم ریخته
البته اینو بگم که میدونم هدف کلی ریپازیتوری اینه که ما عملیات کار با دیتابیس کلا جدا از مدل و لایه‌های دیگه باشه و بعدا ما خواستیم مثلا دیتابیس رو تغییر بدیم فقط کلاس‌های مربوط به ریپازیتوری رو تغییر بدیم

اما الان نمیدونم چرا ما مستقیما از ریپو استفاده نمیکنیم و داریم دوباره داده رو میدیم به مدل و از اون میگیریم

اصلا توی این معماری وظیفه مدل چیه ؟

 

و اینکه اصلا میشه ما ریپازیتوری رو توی وردپرس به شکلی پیاده سازی کنیم که در کنار wpdb از eloquent هم بتونیم استفاده کنیم ؟

اگر آره میشه یک روند کلی از پیاده سازیش بگید که باید به چه شکلی باشه ؟

سلام. در واقع استفاده از مدل جای بحث زیاد داره ولی در پروژه‌های کوچیک استفاده از این سیستم خیلی مشکلی نداره چون احتمال تغییر دیتابیس در اون بیسار کمه. اما در پروژه‌های بزرگ‌تر این قطعا می‌تونه خیلی مفید باشه و جلوی خیلی از مشکلات رو بگیره. در پروژه هایی که ما از Repo استفاده می‌کنیم قطعا دیگه منطق‌ها باید حتما  و حتما فقط با Repo کار کنن واز اون دیتا بگیرن و ذخیره کنن.

در وردپرس هم استفاده از چنین سیستم اصلا نیاز نمیشه.

کیوان علی محمدی ۰۲ مهر ۱۳۹۸، ۰۴:۵۹