代码之家  ›  专栏  ›  技术社区  ›  delboy1978uk

Symfony-MemcachedAdapter::\u construct()必须是Memcached的实例,给定字符串

  •  1
  • delboy1978uk  · 技术社区  · 6 年前

    框架.yaml

    framework:
        cache:
            app: app.memcached_adapter
    

    服务.yaml

    app.memcached_client:
        class: Memcached
        factory: 'Symfony\Component\Cache\Adapter\MemcachedAdapter::createConnection'
        arguments: [['%app.memcached.dsn.1%', '%app.memcached.dsn.2%']]
        public: true
    
    app.memcached_adapter:
        class: Symfony\Component\Cache\Adapter\MemcachedAdapter
        arguments:
            - '@app.memcached_client'
        public: true
    

    Type error: Argument 1 passed to Symfony\Component\Cache\Adapter\MemcachedAdapter::__construct() 
    must be an instance of Memcached, string given, called in 
    /users/me/project/please-dont-mention-the-company/sports/var/cache/lcl/ContainerXqbuh45/srcLclDebugProjectContainer.php 
    on line 1029
    

    在查看上述生成的容器类时,我发现:

    /**
     * Gets the public 'cache.app' shared service.
     *
     * @return \Symfony\Component\Cache\Adapter\TraceableAdapter
     */
    protected function getCache_AppService()
    {
        return $this->services['cache.app'] = new \Symfony\Component\Cache\Adapter\TraceableAdapter(new \Symfony\Component\Cache\Adapter\MemcachedAdapter('kRTmoLLARw'));
    }
    

    我不知道它是如何用那个字符串作为参数生成的,它应该是memcached客户端!

    有什么想法吗?我可以在不调试容器类生成的情况下检查任何内容?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Marcus Wolf    6 年前

    是否尝试从服务容器中获取CacheAdapter,而不是在此处创建新实例: return $this->services['cache.app'] = new \Symfony\Component\Cache\Adapter\TraceableAdapter( new \Symfony\Component\Cache\Adapter\MemcachedAdapter('kRTmoLLARw') // new instance? );