דלגו לתוכן

דפוס מאגר ב-XOOPS

2.5.x ✅ 4.0.x ✅

:::הערה[לא בטוח אם זה התבנית הנכונה?] ראה בחירת דפוס גישה לנתונים לעץ החלטות המשווה בין מטפלים, מאגרים, שירותים ו-CQRS. :::

:::טיפ[עובד היום ומחר] דפוס המאגר עובד גם ב-XOOPS 2.5.x וגם ב-XOOPS 4.0.x. ב-2.5.x, עטפו את ה-XoopsPersistableObjectHandler הקיים שלכם במחלקת Repository כדי לקבל את יתרונות ההפשטה:

גישהXOOPS 2.5.xXOOPS 4.0
גישה ישירה למטפלxoops_getModuleHandler()דרך מיכל DI
עטיפת מאגר✅ מומלץ✅ דפוס מקומי
בדיקה עם לעג✅ עם DI ידני✅ חיווט אוטומטי של מיכל

התחל עם דפוס Repository עוד היום כדי להכין את המודולים שלך להעברת XOOPS 4.0. :::

The Repository Pattern הוא דפוס גישה לנתונים שמפשט פעולות של מסד נתונים, ומספק ממשק נקי לגישה לנתונים. הוא פועל כמתווך בין שכבות ההיגיון העסקי ומיפוי הנתונים.

דפוס המאגר מספק:

  • הפשטה של פרטי הטמעת מסד נתונים
  • קל לעג לבדיקת יחידות
  • לוגיקת גישה לנתונים מרכזית
  • גמישות לשינוי מסד נתונים מבלי להשפיע על ההיגיון העסקי
  • הגיון גישה לנתונים לשימוש חוזר בכל האפליקציה

השתמש במאגרים כאשר:

  • העברת נתונים בין שכבות אפליקציה
  • צורך בשינוי הטמעת מסד נתונים
  • כתיבת קוד בר בדיקה עם דוגמניות
  • הפשטת דפוסי גישה לנתונים
<?php
// Define repository interface
interface UserRepositoryInterface
{
public function find($id);
public function findAll($limit = null, $offset = 0);
public function findBy(array $criteria);
public function save($entity);
public function update($id, $entity);
public function delete($id);
}
// Implement repository
class UserRepository implements UserRepositoryInterface
{
private $db;
public function __construct($connection)
{
$this->db = $connection;
}
public function find($id)
{
// Implementation
}
public function save($entity)
{
// Implementation
}
}
?>
<?php
class UserService
{
private $userRepository;
public function __construct(UserRepositoryInterface $userRepository)
{
$this->userRepository = $userRepository;
}
public function registerUser($username, $email, $password)
{
// Check if user exists
if ($this->userRepository->findByUsername($username)) {
throw new \InvalidArgumentException('Username exists');
}
// Create user
$user = new User();
$user->setUsername($username);
$user->setEmail($email);
$user->setPassword($password);
return $this->userRepository->save($user);
}
}
?>
  • השתמש בממשקים להגדרת חוזי מאגר
  • כל מאגר מטפל בסוג ישות אחד
  • שמור על היגיון עסקי בשירותים, לא במאגרים
  • השתמש באובייקטי ישות למיפוי נתונים
  • זרוק חריגים מתאימים עבור פעולות לא חוקיות

ראה גם:


תגיות: #repository-pattern #data-access #design-patterns #module-development