What are the potential pitfalls of using static methods in repositories for CRUD operations in PHP?
Using static methods in repositories for CRUD operations can lead to tight coupling and make unit testing difficult. To solve this issue, consider using dependency injection to pass an instance of the repository to the class that needs to interact with it.
class UserRepository {
public function create($data) {
// implementation of create method
}
public function update($id, $data) {
// implementation of update method
}
public function delete($id) {
// implementation of delete method
}
}
class UserService {
private $userRepository;
public function __construct(UserRepository $userRepository) {
$this->userRepository = $userRepository;
}
public function createUser($data) {
$this->userRepository->create($data);
}
public function updateUser($id, $data) {
$this->userRepository->update($id, $data);
}
public function deleteUser($id) {
$this->userRepository->delete($id);
}
}
$userRepository = new UserRepository();
$userService = new UserService($userRepository);
$userService->createUser($userData);
$userService->updateUser($userId, $updatedUserData);
$userService->deleteUser($userId);