일반적으로 저장소는 데이터 소스 작업을 처리하는 역할을 담당합니다. 저장소는 데이터베이스 관련 작업을 중앙 집중식으로 관리하는 방법을 제공하고, 코드의 가독성을 높이며, 예외가 발생할 경우 쉽게 추적할 수 있도록 해줍니다. 또한 도메인 계층에서 코드를 분리하는 데 도움이 됩니다. 도메인 작업과 데이터베이스 작업을 분리하는 인터페이스, 구성 요소 또는 클래스일 수 있습니다. 이번 주제에서는 PHP 저장소에 대해 알아보겠습니다.
광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
이 내부에는 데이터베이스에서 데이터를 가져오고, 업데이트하고, 삭제하는 작업을 담당하는 보다 동일한 데이터베이스 작업을 정의할 수 있습니다. 이를 정의하는 방법은 아래를 참조하세요.
interface name_oF_interface { // logic goes here. Can define the methods which are needed to haled the db operations }
위 구문에서는 다양한 메소드를 포함하는 하나의 인터페이스를 정의합니다. 이 인터페이스 키워드 뒤에는 우리가 제공하려는 인터페이스 이름이 옵니다. 아래 구문을 더 잘 이해하기 위해 연습 구문을 살펴보겠습니다.
interface DemoInteface { public function cerate(Object $obj); public function delete($id); public function update(Object $obj); //many more methods we can define here. // but we need to provide their implementation as well in the class which is using this repo. }
위 구문에서는 데이터베이스 작업을 위한 새로운 메서드를 정의했으며 다양한 클래스에서 해당 구현을 제공할 것입니다.
현재로서는 저장소가 데이터베이스 작업을 처리하는 데 사용된다는 것을 알고 있습니다. 이제 다른 언어와 마찬가지로 데이터 계층과 도메인 개체 사이의 계층 역할을 한다고 말할 수 있습니다. 데이터 운영을 중앙 집중식으로 관리할 수 있으므로 많은 이점이 있습니다. 또한 저장소는 엔터티를 처리하는 데도 도움이 됩니다. 해당 엔터티를 가져와 도메인 개체에 로드할 수 있습니다. 이러한 항목도 변경할 수 있습니다.
Repository를 이용하여 수행되는 기본 작업은 다음과 같습니다.
1. 데이터베이스에서 엔터티를 가져와서 메모리에 저장할 수도 있고, 엔터티 개체를 직접 수정하지 않는 것이 항상 권장되기 때문에 더 나은 수정을 위해 해당 엔터티 개체를 도메인 개체로 변환할 수도 있습니다.
2. 데이터베이스에서 가져온 후 해당 개체를 업데이트하고 리포지토리만 사용하여 데이터베이스에 저장하기 위해 보낼 수 있습니다. 이 모든 과정은 트랜잭션을 사용하여 수행할 수 있습니다. 데이터베이스 상호 작용을 수행하는 동안 예외가 발생하면 전체 트랜잭션을 롤백할 수 있습니다.
3. 모든 예외는 지속성 계층에서만 발생하므로 예외를 쉽게 처리할 수 있습니다.
저장소 패턴으로 작업할 때 레이어가 많아 매우 적절하게 처리됩니다. 예를 들어 다음과 같은 다양한 레이어가 있습니다.
이제 이에 따라 일부 클래스와 저장소를 정의하고 실제로 어떻게 작동하는지 이해하려고 노력하는 한 가지 예를 들어보겠습니다. 또한, 아래에서 저장소의 흐름을 살펴보겠습니다.
여기서 하나는 구매자이고 다른 하나는 주문이라고 이의를 제기해야 한다고 가정해 보겠습니다. 이 주문에는 구매자 데이터와 배송을 원하는 주소, 주문 이름 등과 같은 기타 정보가 포함됩니다. 그래서 우리는 이것을 아래와 같이 3개의 레이어로 나누어 설명하겠습니다.
1. 도메인 레이어: 사용 가능한 모든 클래스의 도메인 개체를 생성합니다. 이 예에서는 Buyer an Order 클래스입니다. 이 두 클래스는 모두 리포지토리 패턴의 도메인 계층에 속합니다. 우리는 데이터베이스의 데이터를 보관하기 위해 이러한 개체를 사용할 것입니다.
2. 지속성 레이어: 이 지속성 레이어는 우리가 말할 수 있는 저장소에 불과합니다. 이 수준에서는 데이터베이스와 다시 상호 작용할 저장소를 생성합니다. 하지만 이를 위해 구매자와 주문 간의 작업을 처리하는 데 필요한 모든 메서드를 포함하는 인터페이스를 만들 것입니다. 이 레이어는 예외를 추적하는 데에도 도움이 되며 지속성 레이어에만 속합니다.
수업 :
바이어클래스
class Buyer { public $id; public $gender; public $email; public $firstName; public $lastName; }
클래스 주문
class Order { public $id; public $order_name; public $order_description; public $amount; public $quantity; public $buyerid; }
저장소:
inteface OrderRepo { // we can define our methods here according to requirement. }
위 로직에서 볼 수 있듯이 우리는 다양한 레이어를 다루고 있습니다. 이것이 PHP에서 저장소 패턴이 작동하는 방식입니다. 다른 언어와 상당히 유사합니다.
이 예에서는 다양한 메소드를 호출하기 위한 하나의 저장소를 생성합니다. 하지만 현재로서는 여기서는 db를 사용하지 않습니다. 따라서 Repository의 메소드를 호출한 후 메시지를 출력해보겠습니다.
직원반 :
class Employee { public $id; public $emp_first_name; public $emp_last_name; public $gender; public $email; public $city; } interface EmployeeRepo { public function findById($id); public function create(Employee $emp); public function delete(Employee $emp); public function update(Employee $emp); }
Repository implementations for the employee :
class SQLEmployeeRepo implements EmployeeRepo { public function create(Employee $emp) { print("saving employee data here !!"); } public function findById($id) { print("finding employee data here !!"); } public function delete(Employee $emp) { print("deleting employee data here !!"); } public function update(Employee $emp) { print("updating employee data here !!"); } }
Employee Controller class:
class EmployeeControllerDemo { public function create(EmployeeRepo $repo) { $emp = new Employee; $user->emp_first_name = $_POST['emp_first_name']; $user->emp_last_name = $_POST['emp_last_name']; $user->city = $_POST['city']; $repo->create($user); // here we are creating emp object and calling creae method. } }
Output :
The repository makes our code centralized, more readable, maintainable, and easy to understand. By using the repository, we can easily track the exception and errors if they occurred at the repository level while interacting with the database. It also helps us to decouple our code with less dependency on each other. It acts as a thin layer between the db and persistence layer; some called it part of persistence only.
위 내용은 PHP 저장소의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!