michaldudek/knit-bundle

Knit 与 Symfony3 的集成。

安装: 43

依赖者: 1

建议者: 0

安全: 0

星星: 0

关注者: 3

分支: 0

开放性问题: 0

类型:symfony-bundle

0.3.0 2016-01-11 20:23 UTC

This package is auto-updated.

Last update: 2024-09-06 03:03:48 UTC


README

Knit 以简单的方式将您的 PHP 对象与您选择的数据库绑定。有关 Knit 的更多信息,请参阅其 仓库

这是一个将 Knit 与框架集成的 Symfony3 Bundle。

Build Status SensioLabsInsight

安装

要求安装该 Bundle

$ composer require michaldudek/knit-bundle

在您的 Kernel 中启用该 Bundle

<?php

// ...

    public function registerBundles()
    {
        $bundles = [
            // ...

            new Knit\Bundle\KnitBundle(),
        ];
        // ...
    }

配置

knit 部分添加到您的 config.yml 文件中。

有三个可用的设置,它们都是您想要注入到主 Knit\Knit 类中的服务名称(它们将为所有存储库设置默认值)。

knit:
    # required, default store
    store: [store.service_name]

    # optional, default data mapper, "knit.data_mapper.array_serializer" by default
    data_mapper: [data_mapper.service_name]

    # optional, event dispatcher used, "event_dispatcher" by default
    event_dispatcher: [event_dispatcher.service_name]

配置商店

如您所见,对于 Knit,商店不过是一个需要注入的依赖项。这使您能够以任何您想要的方式配置商店。

为了方便起见,KnitBundle 已注册了两个依赖项,以实现到目前为止实现的两个商店: knit.store.doctrine_dbal.criteria_parserknit.store.mongodb.criteria_parser。它还注册了两个参数,以简化商店类的解析:%knit.store.doctrine_dbal.class%%knit.store.mongodb.class%

使用这两个方面,您可以轻松配置数据存储并在容器中注册它们

services:

    mysql_store:
        class: %knit.store.doctrine_dbal.class%
        arguments:
            - driver: pdo_mysql
              user: %db.username%
              password: %db.password%
              host: %db.host%
              dbname: %db.database%
            - @knit.store.doctrine_dbal.criteria_parser
            - @logger

    # or

    mongodb_store:
        class: %knit.store.mongodb.class%
        arguments:
            - hostname: %mongo.host%
              database: %mongo.database%
              username: %mongo.username%
              password: %mongo.password
            - @knit.store.mongodb.criteria_parser
            - @logger

其中显然需要注册所有连接参数。

然后在 config.yml 中,您可以简单地指定

knit:
    store: mysql_store    # or mongodb_store

存储库

按照惯例,所有存储库都应该注册为服务。您最终会将它们注入到其他服务或控制器中,因此为了清晰起见,KnitBundle 不会自动创建它们。

一个存储库的定义示例如下

user.repository:
    parent: knit.repository
    arguments: [MyApp\User, "users"]

其中第一个参数是管理对象类名,第二个是集合名。也允许有额外的参数 - 有关它们是什么的详细信息,请参阅 Knit 文档

许可证

MIT,请参阅 LICENSE.md

版权所有 (c) 2015 Michał Pałys-Dudek