Data Mapper 패턴은 PHP 애플리케이션에서 소프트웨어 개발, 특히, 데이터 지속력에서 별도의 비즈니스 논리에 사용되는 디자인 기술입니다. 이 분리는 핵심 비즈니스 규칙에서 저장하고 재생하는 방법을 고립시켜 코드 유지성, 테스트성 및 확장성을 향상시킵니다.

Data Mapper 패턴 이해

Data Mapper 패턴의 핵심 아이디어는 데이터베이스 세부 사항에 대해 알아야 할 객체없이 객체와 데이터베이스 사이의 데이터를 전송하는 전용 레이어를 사용하는 것입니다. 이 접근 방식은 데이터베이스 작업을 처리하는 Active Record 패턴과 대조합니다.

Data Mapper 패턴 활용의 이점

  • Decoupling: data access code에서 사업 논리를 분리한다.
  • 테스트 가능: Business logic은 데이터베이스의 독립적으로 테스트할 수 있습니다.
  • Flexibility: 데이타베이스 스키마 또는 저장 방법의 변경은 최소 수정이 비즈니스 로직에 필요합니다.
  • Maintainability: 문제의 명확한 분리는 코드 관리를 단순화합니다.

PHP의 데이터 매퍼 구현

Data Mapper 패턴 구현은 3 가지 주요 구성 요소를 생성하는 것:

  • Domain Objects: 비즈니스 엔티티티를 대표합니다.
  • Data Mapper Classes: 객체와 데이터베이스 사이의 데이터 전송을 처리한다.
  • Database Layer: 실제 데이터베이스 연결 및 쿼리.

예제: 사용자 환경

사용자 클래스를 사용하려면 다음을 사용하여 사용자를 지정합니다.

class User {
 public $id;
 public $name;
 public $email;

 public function __construct($id = null, $name = '', $email = '') {
 $this->id = $id;
 $this->name = $name;
 $this->email = $email;
 }
}

Data Mapper 클래스 만들기

Data Mapper for User Class는 데이터베이스 상호 작용을 관리합니다.

class UserMapper {
 protected $pdo;

 public function __construct(PDO $pdo) {
 $this->pdo = $pdo;
 }

 public function findById($id) {
 $stmt = $this->pdo->prepare('SELECT * FROM users WHERE id = :id');
 $stmt->execute([':id' => $id]);
 $row = $stmt->fetch();

 if ($row) {
 return new User($row['id'], $row['name'], $row['email']);
 }
 return null;
 }

 public function save(User $user) {
 if ($user->id) {
 $stmt = $this->pdo->prepare('UPDATE users SET name = :name, email = :email WHERE id = :id');
 $stmt->execute([
 ':name' => $user->name,
 ':email' => $user->email,
 ':id' => $user->id
 ]);
 } else {
 $stmt = $this->pdo->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
 $stmt->execute([
 ':name' => $user->name,
 ':email' => $user->email
 ]);
 $user->id = $this->pdo->lastInsertId();
 }
 }
}

관련 기사

PHP의 데이터 매퍼 패턴 구현은 데이터 저장에서 비즈니스 로직을 디코딩하여 깨끗한 아키텍처를 만듭니다. 이 접근법은 더 많은 유지 보수를 만들뿐만 아니라 테스트 및 미래 수정을 용이하게하며 응용 프로그램을 견고하고 적응할 수 있습니다.