仅在特定环境中加载锂库

时间:2015-05-08 05:20:09

标签: lithium

我已将li3_docs(https://github.com/UnionOfRAD/li3_docs)添加到我的应用程序中,但我不希望此库在生产环境中加载。防止文档在生产环境中可用的最佳方法是什么?最初我想把这行添加到我的 config / bootstrap / libraries.php

if(!Environment::is('production')) {
   Libraries::add('li3_docs');
}

这不起作用,因为还没有加载环境类,我觉得在库加载器之前加载它是不明智的。那么最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

在添加库之前,hacky方式是添加Environment::set(new \lithium\net\http\Request())

另一种方式:

  1. 添加库时添加配置值

    Libraries::add('li3_docs', array('devOnly' => true));
    
  2. Dispatcher::run中的默认app\bootstrap\action.php过滤器更新为此类

    Dispatcher::applyFilter('run', function($self, $params, $chain) {
      Environment::set($params['request']);
    
      foreach (array_reverse(Libraries::get()) as $name => $config) {
        $devOnly = isset($config['devOnly']) && $config['devOnly'];
        $devOnly = $devOnly && Environment::is('development');
        if ($name === 'lithium' || $devOnly) {
          continue;
        }
        $file = "{$config['path']}/config/routes.php";
        file_exists($file) ? include $file : null;
      }
      return $chain->next($self, $params, $chain);
    });