且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

具有唯一实例的 Symfony2 服务

更新时间:2023-09-18 23:11:10

您必须将类用作服务吗?

Do you have to use the class as a service?

为什么不使用单例而不使用服务?像这样:

Why don't you use a Singleton, without using a service? Like this:

namespace Xpad\BackendClienteBundle\Filters;

use Xpad\ProductoBundle\Entity\ProductRepository;

class ProductFilters { 
    private $_queryBuilder;
    private static $reference = null;

    public function getInstance(){
        if (self::$reference === null)
            self::$reference = new ProductFilters();
        return self::$reference;
    }

    private function __construct(){}

    public function getQueryBuilder()
    {
        return $this->_queryBuilder;
    }

    public function setQueryBuilder($queryBuilder)
    {
        $this->_queryBuilder = $queryBuilder;
    }

    public function setRepository(ProductRepository $productRepository = null)
    {
        if($this->_queryBuilder == null)
        {
            $this->_queryBuilder = $productRepository->createQueryBuilder('p');
        }

    }
}

并调用它:

...
$filter = ProductFilters::getInstance();
...