【发布时间】:2014-05-02 12:38:36
【问题描述】:
我正在尝试在我的 zend 框架 2 应用程序中实现存储库模式。我做了服务
<?php
class UserService {
private $userRepository;
public function __construct(IUserRepository $repo) {
$this -> userRepository = $repo;
}
public function createUser($params) {
$this -> userRepository -> create($params);
}
public function findAllUsers() {
return $this -> userRepository -> getAllUsers();
}
}
它有一个实现接口的存储库
class UserRepository implements IUserRepository {
public function getAllUsers() {
//return all users
}
public function getUserById($id) {
}
public function getOneUser($params){
}
public function getUsers($params){
}
public function create($params){
}
public function update($params){
}
public function delete($params){
}
}
<?php
interface IUserRepository {
public function getAllUsers();
public function getUserById($id);
public function getOneUser($params);
public function getUsers($params);
public function create($params);
public function update($params);
public function delete($params);
}
在我的 module.php 中,我使用依赖注入来确定我将哪个存储库注入到控制器中
public function getControllerConfig() {
return array('factories' => array(
'My\Controller\Accounts' => function(){
return new AccountsController(new UserRepository());
},
),
);
}
在我的控制器中,我将存储库传递给我的服务
class AccountsController extends AbstractActionController {
private $service;
public function __construct(IUserRepository $repo) {
$this->service = new UserService($repo);
}
public function indexAction() {
$all_users = $this->service->findAllUsers();
return new ViewModel(array('users' => $all_users));
}
}
我的问题是我使用 Doctrine 作为 Orm,我想在我的存储库中使用 entitymanager,但我不知道该怎么做,感谢任何想法和反馈
【问题讨论】:
标签: php doctrine-orm zend-framework2 repository-pattern