仅在某些环境中加载锂库
Loading a lithium library only in certain environments
我已将 li3_docs (https://github.com/UnionOfRAD/li3_docs) 添加到我的应用程序,但我不想在生产环境中加载此库。防止文档在生产环境中可用的最佳方法是什么?最初我想将此行添加到我的 config/bootstrap/libraries.php:
if(!Environment::is('production')) {
Libraries::add('li3_docs');
}
这不起作用,因为环境 class 尚未加载,我觉得在库加载器之前加载它是不明智的。那么最好的方法是什么?
hacky 方法是在添加库之前添加 Environment::set(new \lithium\net\http\Request())
。
另一种方式:
添加库时添加配置值
Libraries::add('li3_docs', array('devOnly' => true));
将 app\bootstrap\action.php
中的默认 Dispatcher::run
过滤器更新为类似这样的内容
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);
});
我已将 li3_docs (https://github.com/UnionOfRAD/li3_docs) 添加到我的应用程序,但我不想在生产环境中加载此库。防止文档在生产环境中可用的最佳方法是什么?最初我想将此行添加到我的 config/bootstrap/libraries.php:
if(!Environment::is('production')) {
Libraries::add('li3_docs');
}
这不起作用,因为环境 class 尚未加载,我觉得在库加载器之前加载它是不明智的。那么最好的方法是什么?
hacky 方法是在添加库之前添加 Environment::set(new \lithium\net\http\Request())
。
另一种方式:
添加库时添加配置值
Libraries::add('li3_docs', array('devOnly' => true));
将
app\bootstrap\action.php
中的默认Dispatcher::run
过滤器更新为类似这样的内容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); });