【问题标题】:How to disable Kint in local environment under Laravel 4如何在 Laravel 4 下在本地环境中禁用 Kint
【发布时间】:2013-11-13 08:06:02
【问题描述】:

我在 Laravel 4 中通过 Composer 使用 Kint,方法是首先在 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/ 目录中将被 composer 覆盖的文件
  • 只在本地环境中启用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 );

(但没有骰子:)

有什么建议吗?蒂亚!

【问题讨论】:

  • 这里是 Kint 的作者,感谢您的尝试,希望对您有所帮助。我正在积极研究和计划重新安排设置位置以使作曲家用户的生活更轻松,但我还没有明确的解决方案:stackoverflow.com/q/18751125/179104
  • 嗨@Raveren!我认为 Laravel 会寻找 /Vendor/Raveren/Kint/src/config/config.php 作为替代。也许 Kint 也可以在那里检查? php artisan publish:raveren/kint 将配置覆盖文件复制到正确的位置...
  • 我在这里创建了一个问题:github.com/raveren/kint/issues/94,我会在时间允许的时候调查这种情况,感谢您的贡献! :)

标签: laravel-4 composer-php


【解决方案1】:

我不熟悉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'),
));

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

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

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

【讨论】:

  • 发送!你能建议我应该把代码放在哪里吗?如果可能的话,我很想遵循惯例..(还有..哎呀,在我的 Q 中复制意大利面错误 - 我确实尝试过 enabled=false,已编辑)
  • tx 获取详细答案! Tx,Kint::enabled(false) 如果我把它放在 routes.php 或 config/app.php 的顶部,对我有用...我会暂时把这个问题留着,因为我喜欢传统配置的解决方案/override.. 再次发送!
【解决方案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

【讨论】:

  • 意外投反对票,我似乎没有撤消它的声誉。除非您进行编辑。对此感到抱歉,但如果您进行了微不足道的修改,我会很乐意撤消我的反对意见。
  • 谢谢,为你修好了!
猜你喜欢
  • 2014-07-29
  • 2016-10-15
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 2014-01-07
相关资源
最近更新 更多