0

我已将 dbal 连接从控制器传递到执行大量查询和计算的类,如

$conn = $this->get('database_connection');
$stats = new Statistics($conn, $criteria);

这合适吗?为连接创建服务似乎没有帮助,因为我需要使用两个参数调用该类。有没有更好或更合适的方法来达到同样的目的?这种方法至少有效。

4

2 回答 2

2

最好的方法是通过服务容器创建服务和加载。

服务.yml

Acme.demo.statics:
        class:        Acme\DemoBundle\Handler\Statistics
        arguments:    [@database_connection,  { param1: %param1%, param2: %param1%}]

统计.php

use Doctrine\DBAL\Connection;

class Statistics
{
    protected $connection;
    protected $parameters;

    public function __construct(Connection $connection, array $parameters)
    {
        $this->connection = $connection;
        $this->parameters = $parameters;
    }
于 2013-03-29T06:01:18.277 回答
0

您可以控制 Statistics 课程吗?

如果是这样,则从构造函数中删除标准并实现 setCriteria 方法或将标准作为 getResults 或任何方法的一部分传递。

@Venu 向您展示了使用参数传递数据的热情。如果您的条件数组可以提前设置,那么您可以使用它。但我猜这个标准是在请求期间建立的。

并且没有要求统计成为一项服务。只是让事情变得容易一些。因此,如果您对现有代码感到满意,请不要担心。只是意味着您需要在想要制作一个时抓住连接对象。这意味着如果您确实需要注入其他对象,那么您的代码将不得不更改。

于 2013-03-29T13:24:19.653 回答