Sublimetext3 xdebug忽略错误抑制-未安装尖叫

Sublimetext3 xdebug忽略错误抑制-未安装尖叫,sublimetext3,xdebug,Sublimetext3,Xdebug,我已经安装了xdebug,正在ubuntu14.10笔记本电脑上使用sublimitext3进行开发。我的问题是使用xdebug解析的@符号抑制的错误。因此,在我整洁的mvc架构中,任何自动加载器都意味着我必须反复按run快捷键,以最终查看我的更改是否有效。非常恼人。更重要的是,我没有启用“尖叫”功能。在myphpinfo()中,搜索scream只会生成xdebug.cream=Off 所以。。。在我的自动加载器中,以下内容将触发xdebug警告 @include $class . ".php"

我已经安装了
xdebug
,正在
ubuntu14.10
笔记本电脑上使用
sublimitext3
进行开发。我的问题是使用
xdebug
解析的
@
符号抑制的错误。因此,在我整洁的mvc架构中,任何自动加载器都意味着我必须反复按
run
快捷键,以最终查看我的更改是否有效。非常恼人。更重要的是,我没有启用“尖叫”功能。在my
phpinfo()
中,搜索
scream
只会生成
xdebug.cream=Off

所以。。。在我的自动加载器中,以下内容将触发xdebug警告

@include $class . ".php";
我是否必须明确告诉
xdebug
不要忽略错误?我是否可以通过编程方式声明希望xdebug忽略
@include(
警告),但触发
include(
警告)

感谢您的帮助

sublimitext 3 xdebug设置

{
    // For remote debugging to resolve the file locations
    // it is required to configure the path mapping
    // with the server path as key and local path as value.
    //
    // Make sure to use absolute path when defining server path,
    // because Xdebug debugger engine does not return symbolic links.
    //
    // Example:
    // "/absolute/path/to/file/on/server" : "/path/to/file/on/computer",
    // "/var/www/htdocs/example/" : "C:/git/websites/example/"
    "path_mapping": {

    },

    // Determine which URL to launch in the default web browser
    // when starting/stopping a session.
    "url": "",

    // An IDE key is used to identify with debugger engine
    // when Sublime Text will start or stop a debugging session.
    //
    // This package does not filter sessions by IDE key,
    // it will accept any IDE key, also ones that do not match this configured IDE key.
    // It is merely used when launching the default web browser with the configured URL.
    "ide_key": "",

    // Which port number Sublime Text should listen
    // to connect with debugger engine.
    "port": 9000,

    // Show super globals in context view.
    "super_globals": true,

    // Maximum amount of array children
    // and object's properties to return.
    "max_children": 32,

    // Maximum amount of
    // variable data to initially retrieve.
    "max_data": 1024,

    // Maximum amount of nested levels to retrieve
    // of array elements and object properties.
    "max_depth": 1,

    // Break at first line on session start, when debugger engine has connected.
    "break_on_start": false,

    // Break on exceptions, suspend execution
    // when the exception name matches an entry in this list value.
    "break_on_exception": [
        // E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR
        "Fatal error",
        // E_RECOVERABLE_ERROR (since PHP 5.2.0)
        "Catchable fatal error",
        // E_WARNING, E_CORE_WARNING, E_COMPILE_WARNING, E_USER_WARNING
        //"Warning"
    ],

    // Always close debug windows and restore layout on session stop.
    "close_on_stop": false,

    // Do not show possible password values in context output.
    "hide_password": false,

    // Show in output parsed response instead of raw XML.
    "pretty_output": false,

    // Always launch browser on session start/stop.
    // Note: This will only work if you have the 'url' setting configured.
    "launch_browser": false,

    // When launching browser on session stop do not execute script.
    // By using parameter XDEBUG_SESSION_STOP_NO_EXEC instead of XDEBUG_SESSION_STOP.
    "browser_no_execute": false,

    // Do not use the debugging window layout.
    "disable_layout": false,

    // Window layout that is being used when debugging.
    "debug_layout" : {
        "cols": [0.0, 0.5, 1.0],
        "rows": [0.0, 0.7, 1.0],
        "cells": [[0, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]]
    },

    // Group and index positions for debug views.
    "breakpoint_group": 2,
    "breakpoint_index": 1,
    "context_group": 1,
    "context_index": 0,
    "stack_group": 2,
    "stack_index": 0,
    "watch_group": 1,
    "watch_index": 1,

    // Custom gutter icons for indicating current line or enabled/disabled breakpoints.
    //
    // Do not use same icon for following values, because Sublime Text is unable
    // to use the same icon for different scopes, in case there are duplicate icons
    // detected it will fall back to the corresponding icon in the package.
    "breakpoint_enabled": "circle",
    "breakpoint_disabled": "dot",
    "breakpoint_current": "",
    "current_line": "bookmark",

    // Path to Python installation on your system.
    // Which is being used to load missing modules.
    //
    // It is recommended to configure your Python path for Sublime Text 2
    // especially on older UNIX systems, where some modules (xml.parsers.expat)
    // might be missing and could improve performance of package.
    //
    // Example:
    // "python_path" : "/usr/lib/python2.7"
    "python_path" : "",

    // Show detailed log information about communication
    // between debugger engine and Sublime Text.
    // Log can be found at Packages/User/Xdebug.log
    "debug": false
}
以及我的项目特定设置(以防万一):


我没有sublime文本,我是PhpStorm的粉丝,因此我无法为您验证任何内容。但是,您应该能够添加一个不包括通知、警告等的中断例外配置,并查看该配置是否适用于您:

[更新2015-03-06]

如果您的IDE甚至在被抑制的错误上都出现了中断,那么我怀疑这是一个选项。然而,我的建议是不要在任何错误上中断IDE,因为您可以很容易地在错误日志中看到带有尾部的错误,并且我不认为被抑制的错误会出现。然而,事实上,这对于您来说是一个问题,这听起来很简单就像你对很多错误使用错误抑制…只有我的两分钱,但这种情况永远不会发生

即使是被抑制的错误也会降低应用程序的性能…因此,如果您使用抑制来避免测试未定义的索引,等等

$var = @$_POST['name']
为了避免这样做:

$var = isset($_POST['name']) ? $_POST['name'] : null;
然后,您应该重新考虑您正在做什么,并停止使用抑制。例如,最好编写一个包装类:

class Input {
    private $_input;

    public function __construct( array $data ) {
        $this->_input= $data;
    }
    public function get( $name ) {
        return isset($this->_input[$name]) ? $this->_input[$name] : null;
    }
}
这样做不仅使您不必抑制错误,而且使您的代码更加灵活,并且——更不用说——在输入被注入时能够由单元测试运行

$data = new Input($_POST);
$var = $data->get('name');

奇怪的是,我几乎使用默认设置,XDebug什么都不做——即使是异常情况,除非我设置了断点……这可能是您的IDE设置,而不是XDebug。可能很容易。将为xdebugI添加我的IDE设置在我的设置中只有
致命错误
未注释。但我希望看到未被抑制和忽略的警告是的
class Input {
    private $_input;

    public function __construct( array $data ) {
        $this->_input= $data;
    }
    public function get( $name ) {
        return isset($this->_input[$name]) ? $this->_input[$name] : null;
    }
}
$data = new Input($_POST);
$var = $data->get('name');