AgentSkillsCN

backend-architecture-repository-pattern

数据访问抽象与仓储模式。

SKILL.md
--- frontmatter
name: backend-architecture-repository-pattern
description: Data access abstraction, repository pattern.

Backend Architecture Repository Pattern

When to use this skill

  • Abstracting data access
  • Multiple data sources
  • Testability
  • Complex queries

Workflow

  • Create repository interface
  • Implement repository
  • Inject into services
  • Abstract query logic
  • Keep repositories focused

Instructions

Interface

php
<?php

namespace App\Repositories;

interface UserRepositoryInterface
{
    public function find(int $id): ?User;
    public function findByEmail(string $email): ?User;
    public function save(User $user): User;
}

Implementation

php
<?php

namespace App\Repositories;

class UserRepository implements UserRepositoryInterface
{
    public function __construct(
        private UserModel $model
    ) {}

    public function find(int $id): ?User
    {
        return $this->model->find($id);
    }

    public function findByEmail(string $email): ?User
    {
        return $this->model->where('email', $email)->first();
    }
}

Resources

  • Abstract data access
  • Easy to mock for testing
  • Switch data sources easily