2016-08-24 2 views
0

を壊し拡張することは私のコードです:はコンフィグがここでアプリケーション

// Yoda namespace 
namespace Yoda\Application\Config\Feature; 

// use zend config 
use Zend\Config\Config; 

// CacheConfig class 
class CacheConfig extends Config 
{ 
    /** 
    * Default cache type for now 
    * 
    * @var string 
    */ 
    const DEFAULT_CACHE_TYPE = 'filesystem'; 

    /** 
    * Default cache ttl for now 
    * 
    * @var integer 
    */ 
    const DEFAULT_CACHE_TTL = 3600; 

    /** 
    * Constructor. Creates config data for caching 
    */ 
    public function __construct() 
    {    
     $config=[ 
      'name'=> static::DEFAULT_CACHE_TYPE, 
      'options' => [ 
       'ttl' => static::DEFAULT_CACHE_TTL, 
       'cache_dir' => '/var/www/html/yoda/data/cache' 
      ] 
     ]; 
     parent::__construct($config,true); 
    } 
} 

私はこのコードをアプリケーションブレークを使用して、私はちょうどそれが正常に動作し、標準Zend Configオブジェクトに設定配列を渡すときしかしThe localhost page isn't workingを言うとき。

  $config=[ 
       'name'=> 'filesystem', 
       'options' => [ 
        'ttl' => 3600, 
        'cache_dir' => '/var/www/html/yoda/data/cache' 
       ] 
      ];    
      //works fine 
      $configCache = new Config($config); 

      //breaks     
      $configCache = new CacheConfig(); 

わからないいただきました!ここで間違っ:

は、ここに私の使用コードです。

+0

'static ::'または 'self ::'?私は静的プロパティへの参照は '自己::'でなければならないと思う – Kamran

+0

は解決しなかった – jkushner

答えて

0

これは、Configクラスでコンストラクタが静的インスタンスをロードするためです。私はこれやったとき:

public function __construct() 
{    
    $config=[ 
     'name'=> static::DEFAULT_CACHE_TYPE, 
     'options' => [ 
      'ttl' => static::DEFAULT_CACHE_TTL, 
      'cache_dir' => yoda::registry('cache_dir') 
     ] 
    ]; 
    $this->allowModifications = true;  
    foreach ($config as $key => $value) { 
     if (is_array($value)) { 
      $this->data[$key] = new Config($value, $this->allowModifications); 
     } else { 
      $this->data[$key] = $value; 
     } 
    } 
} 

を私はあなたのconfigCacheコンストラクタで次の操作を行うことができます代わりに、Zendの設定クラスを変更するConfig

0

に置き換えるときに動作するようです。 configクラスが配列を持つキャッシュクラスを呼び出すと、受け取った配列を持つconfigクラスに制御を戻します。その後、configオブジェクトを適切に設定します。エラーはStatic Bindingsのためです。

/** 
    * Constructor. Creates config data for caching 
    */ 
    public function __construct($arr = []) 
     {  
      $config=[ 
       'name'=> static::DEFAULT_CACHE_TYPE, 
       'options' => [ 
        'ttl' => static::DEFAULT_CACHE_TTL, 
        'cache_dir' => '/var/www/html/yoda/data/cache' 
       ] 
      ]; 
      if (count($arr) > 0) 
      { 
       parent::__construct($arr,true); 
      } 
      else 
      { 
       parent::__construct($config,true); 
      } 
     } 

    $configCache = new CacheConfig(); 
    print_r($configCache); 
関連する問題