doubeiji2602 2016-08-24 08:19
浏览 17

扩展配置中断应用程序

Here is my code:

// 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);
    }
}

When I use this code the application breaks and says The localhost page isn't working however when I just pass the config array into a standard Zend Config object it works fine.

Here's my usage code:

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

            //breaks                
            $configCache = new CacheConfig();

Not sure whats wrong here.

  • 写回答

2条回答 默认 最新

  • dph6308 2016-08-24 08:54
    关注

    It's because in the Config class the constructor loads a static instance of itself. WHen I did this:

    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;
            }
        }
    }
    

    It seems to work when I replace it with Config

    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c