2

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

我想在我的应用程序中保留调试调用,如果不在本地环境中,则禁用 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文档指出:

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

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

我如何做到这一点:

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

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

<?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 );

(但没有骰子:)

有什么建议么?蒂亚!

4

2 回答 2

2

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

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

Laravel您可以使用检查环境

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

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

更新:我已经将我的本地环境设置为如下(在bootstrap/start.php

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

在我的本地机器中,我设置了一个虚拟机,laravel4.dev它的基本网址是,所以如果我使用它访问应用程序,laravel4.dev or laravel4.dev/logon我可以检查我的环境BaseController.php,它会检测到本地环境,因为.dev

public function __construct()
{
    if(App::environment() == 'local') {
        // do something
    }
}

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

于 2013-11-02T07:09:20.383 回答
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

于 2013-11-06T07:40:01.267 回答