我在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 以覆盖默认值...
。这对我有用 ( /vendor/raveren/kint/config.php
)
我如何实现这一点:
- 无需编辑/vendor/目录中将被作曲家覆盖的文件
- 以便仅在本地环境中启用 kint
我还尝试将以下内容添加到 helpers.php 文件中,该文件在/bootstrap/autoload 中在作曲家之前调用.php如此处建议:
<?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
但检查了文档并发现,要禁用kint
输出,您可以使用(在运行时)
// to disable all output
Kint::enabled(false);
在Laravel
您可以使用以下命令检查环境
$env = App::environment();
if($env == 'your_predefined_environment') {
Kint::enabled(false);
}
要配置您的环境,您可以查看文档。
更新:我已经将我的本地环境设置为下面的givel(bootstrap/start.php
)
$env = $app->detectEnvironment(array(
'local' => array('*.dev'),
));
在我的本地机器中,我设置了一个虚拟 mashine,它laravel4.dev
作为基本 url,因此如果我使用 laravel4.dev or laravel4.dev/logon
访问该应用程序,那么我可以检查BaseController.php
中的环境,它会检测到本地环境,因为.dev
public function __construct()
{
if(App::environment() == 'local') {
// do something
}
}
在您的情况下,我不知道您用于打印输出的第一个调试/跟踪在哪里,因此您应该在使用任何debug/trace
之前保持环境检查并禁用Kint
代码,但您可以尝试这样做(如果它适合您),但您也可以在filter/routes
文件中检查环境。
嗯。我不确定这是否是理想的方法,但这有效,而且似乎是拉拉维尔式的:
// top of app/start/global.php
Kint::enabled(false);
和
// app/start/local.php
Kint::enabled(true);
(假设您定义了本地环境:有关详细信息,请参阅 @TheAlpha 的答案)
http://laravel.com/docs/lifecycle#start-files