如何在Laravel 4下的本地环境中禁用Kint

时间:2013-11-02 02:28:52

标签: laravel-4 composer-php

我在Laravel 4中使用Kint通过Composer首先在composer.json中加载kint,以便dd()由kint定义,而不是laravel(建议here)。

我想在我的应用程序中保留调试调用,如果不在本地环境中,则禁用Kint。我使用以下结构成功使用Anvard的配置覆盖:

/app/config/local/packages/provider/package_name/overridefile.php

不幸的是,对于具有以下结构的Kint,这不起作用:

/app/config/packages/raveren/kint/local/config.php/app/config/packages/raveren/kint/local/config.default.php

Kint documentation州:

  

您可以选择复制包含的config.default.php并重命名为config.php以覆盖默认值...

...对我有用(/vendor/raveren/kint/config.php

我如何实现这一目标:

  • ,无需编辑/ vendor /目录中将被作曲家覆盖的文件
  • 以便仅在本地环境中启用kint

我还尝试将以下内容添加到helpers.php文件中,该文件在/bootstrap/autoload.php中的composer之前调用,如建议的here

<?php
isset( $GLOBALS['_kint_settings'] ) or $GLOBALS['_kint_settings'] = array();
$_kintSettings = &$GLOBALS['_kint_settings'];

/** @var bool if set to false, kint will become silent, same as Kint::enabled(false) or Kint::$enabled = false */
$_kintSettings['enabled'] = false;

unset( $_kintSettings );

(但没有骰子:)

有什么建议吗? TIA!

2 个答案:

答案 0 :(得分:2)

我不熟悉kint,但检查了文档并发现,要禁用kint输出,您可以使用(在运行时)

// to disable all output
Kint::enabled(false);

Laravel中,您可以使用

检查环境
$env = App::environment();
if($env == 'your_predefined_environment') {
    Kint::enabled(false);
}

要配置您的环境,您可以查看documentation

更新:我已将我的本地环境设置为以下的给定(在bootstrap/start.php中)

$env = $app->detectEnvironment(array(
    'local' => array('*.dev'),
));

在我的本地计算机上,我设置了一个虚拟mashine,其laravel4.dev为基本网址,因此如果我使用laravel4.dev or laravel4.dev/logon访问该应用,那么我可以检查BaseController.php中的环境1}}它因.dev

而检测到本地环境
public function __construct()
{
    if(App::environment() == 'local') {
        // do something
    }
}

在您的情况下,我不知道您用于打印输出的第一个调试/跟踪在哪里,因此您应该在使用任何{{1}之前保持环境检查并禁用Kint代码但你可以尝试这个(如果它适合你),但你也可以检查debug/trace文件中的环境。

答案 1 :(得分:2)

嗯..我不确定这是否是理想的做法,但这很有效,而且似乎是Laravel'ish:

// top of app/start/global.php
Kint::enabled(false);

// app/start/local.php
Kint::enabled(true);

(假设您已定义了本地环境:请参阅@ TheAlpha的答案以获取更多信息)

http://laravel.com/docs/lifecycle#start-files