小编Nik*_*sov的帖子

Symfony2 DTO,实体转换

我正在使用doctrine2创建symfony2应用程序,我想就DTO-Entity,Entity-DTO转换的常见/良好实践提出建议.我找到了所有语言和框架的一些信息,但SF2没有.

我想隔离实体,因此它们仅用于服务和DAO(管理器,SF2术语中的存储库).控制器永远不会看到DAO或实体,只能通过服务与业务逻辑交互.服务和控制器之间的所有通信都应该通过原始类型,标量,DTO来完成.

示例:

调节器

class RegistrationController extends Controller
{
    public function registerAction($name)
    {
        $userDTO = new UserDTO();
        $form = $this->createForm(new UserType(), $userDTO);

        $form->handleRequest($request);

        if ($form->isValid()) {
            $userService = $this->get('userService');

            $userService->createUser($userDTO);

            return $this->redirect($this->generateUrl('success'));
        }

    --//--
    }
}
Run Code Online (Sandbox Code Playgroud)

服务

class UserServiceImpl implements UserService
{

    private $userDao;

    public function __construct(UserDao $userDao)
    {
        $this->userDao = $userDao;
    }

    public function createUser(UserDTO $user)
    {
        $user = new User(); #doctrine entity
        $user->setFirstName($userDTO->getFirstName());
        $user->setLastName($userDTO->getLastName());

        $this->userDao->persist($user);
        $this->userDao->flush();

        --//--
    }
}
Run Code Online (Sandbox Code Playgroud)

随着User对象中属性数量的增加,问题很快出现.在我的应用程序中,用户有13个字段 是否有任何SF2工具(类)来简化此过程?你自己编写转换器/变压器吗?你能举例说明它应该是什么样的吗?Maby PHP魔术方法可以帮忙吗?反思怎么样?

感谢您的建议和意见.

php architecture dto symfony doctrine-orm

11
推荐指数
1
解决办法
9405
查看次数

标签 统计

architecture ×1

doctrine-orm ×1

dto ×1

php ×1

symfony ×1