2015-07-03 11 views
5

Bir arabirimi uygulayan bir sınıfta garip bir hata alıyorum.Sınıf Geri Dönüsmez Arayüz Örneği PHP

Hata:

Catchable fatal error: Argument 1 passed to MyApp\Library\Cache::__construct() must be an instance of MyApp\Contacts\CacheInterface, instance of MyApp\Driver\Cache\File given

Dosya Sınıfı:

namespace MyApp\Driver\Cache; 
use MyApp\Library\Config; 
use MyApp\Contracts\CacheInterface; 

class File implements CacheInterface { 
    private $expire; 

    public function __construct($expire, Config $config) { 
     $this->expire = $expire; 
     $this->config = $config; 

     ... more code 
    } 
} 

Önbellek Sınıfı:

namespace MyApp\Library; 
use MyApp\Contacts\CacheInterface; 

final class Cache { 

    private $cache; 

    public function __construct(CacheInterface $cache) { 
     $this->cache = $cache; 
    } 

    ... more methods 
} 

Arabirim: Bunun gibi bir Sivilce kapsayıcı bir hizmet olarak Uygulanan

namespace MyApp\Contracts; 
interface CacheInterface { 

    public function get($key); 
    public function set($key, $value); 
    public function delete($key); 
    public function flush_cache(); 
} 

: Elbette

$this->data['cache'] = function ($data) { 
    switch ($data['config_cache_type_id']): 
     case 'apc': 
      $driver = new Apc($data['cache.time'], $data['config']); 
      break; 
     case 'mem': 
      $driver = new Mem($data['cache.time'], $data['config']); 
      $driver->connect(); 
      break; 
     case 'file': 
     default: 
      $driver = new File($data['cache.time'], $data['config']); 
      break; 
    endswitch; 

    return new Cache($driver); 
}; 

4 Sürücü ve Önbellek sınıfları konteyner dersten önce use anahtar kelime ile dahil edilmiştir.

Neyi kaçırdığımı göremiyorum, aynı prosedürde başka birkaç sözleşme yaptım. Herhangi bir fikir takdir edilecektir.

use MyApp\Contracts\CacheInterface; 

use MyApp\Contacts\CacheInterface; 

ile Ve arayüzü, kullanım için:

namespace MyApp\Contacts; 
+0

Evet onlar, üzgünüm ben unuttum do senin File.class yılında –

cevap

1

, sen yerine deneyebilirsiniz bundan bahsetmek.
+0

Yani bir tipti ... geez 30 dakika boyunca başlamış olmalıyım ve hala görmedim. Teşekkürler Dave. –