菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
1902
3

symfony 中将数据库操作 Repository 封装成 service

原创
05/13 14:22
阅读数 2736

最近了解到了sylius这个框架,发现这个框架将symfony运用的真是特别牛逼。

于是,学习了一下他的代码。发现真的很厉害。各种程度都写的特别完美。

于是今天偷师了一种工厂模式、

工厂模式:

在symfony中,我们又各种各样的工厂。比如doctrine的工厂。

为了让这个doctrine对象能成为一个服务,我们需要配置服务容器。以便能够使用doctrine中的所有可用的方法。

我们可以在service.yml中这样记录

    ahn_admin_orders:
        class: ahn_admin_orders
        factory: 'doctrine.orm.entity_manager:getRepository'

这样的话,就可以了。

我们可以传递一些参数给他。

parameters:
   ahn_admin_order_class: Ahn\Component\Entity\Orders

services:
    ahn_admin_orders:
        class: ahn_admin_orders
        factory: 'doctrine.orm.entity_manager:getRepository'
        arguments:
            class: "%ahn_admin_order_class%"

然后我个人喜欢把Entity以及Repository数据放在一个单独的文件内,

就像下面这样

symfony中将数据库操作Repository封装成service

然后我在任意一个bundle中建立一个service.yml文件

来放置我所有的数据库操作。

parameters:
   ahn_admin_order_class: Ahn\Component\Entity\Orders

services:
    ahn_admin_orders:
        class: ahn_admin_orders
        factory: 'doctrine.orm.entity_manager:getRepository'
        arguments:
            class: "%ahn_admin_order_class%"

然后要调用的话就直接以获取服务的方式来获取


 public function indexAction()
    {
        $test = $this->getDoctrine()->getManager();
        $test1 = $this->get('ahn_admin_orders')->test(1);
        dump($test1);exit;
        return $this->render('AhnAdminBundle:Default:index.html.twig');
    }

于是这样我们以后来操作数据库就更加强了。

发表评论

0/200
1902 点赞
3 评论
收藏
为你推荐 换一批