编译警告

当发现代码可以改进或避免潜在错误的情况时,编译器会发出警告。

警告可以通过命令行参数启用,也可以添加到config.json以更永久地启用或禁用它们。

可以通过将警告的名称以-w为前缀传递来启用警告:

zephir -wunused-variable -wnonexistent-function

警告可以通过传递前缀为-W的名称来禁用:

zephir -Wunused-variable -Wnonexistent-function

支持以下警告:

unused-variable

在声明变量但在方法中未使用时引发。 此警告默认启用。

public function some()
{
    var e; // declared but not used

    return false;
}

unused-variable-external

当一个参数被声明但在方法中没有使用时引发。

public function sum(a, b, c) // c is not used
{
    return a + b;
}

possible-wrong-parameter-undefined

当一个方法以错误的类型调用参数时引发:

public function some()
{
    return this->sum("a string", "another");  // wrong parameters passed
}

public function sum(int a, int b)
{
    return a + b;
}

nonexistent-function

调用编译时不存在的函数时引发:

public function some()
{
    someFunction(); // someFunction does not exist
}

nonexistent-class

当使用编译时不存在的类时引发:

public function some()
{
    var a;

    let a = new \MyClass(); // MyClass does not exist
}

non-valid-isset

当编译器检测到正在对非数组或-对象值执行“isset”操作时引发:

public function some()
{
    var b = 1.2;

    return isset b[0]; // variable integer 'b' used as array
}

non-array-update

当编译器检测到正在对非数组值执行数组更新操作时引发:

public function some()
{
    var b = 1.2;
    let b[0] = true; // variable 'b' cannot be used as array
}

non-valid-objectupdate

当编译器检测到正在对非对象值进行对象更新操作时引发:

public function some()
{
    var b = 1.2;
    let b->name = true; // variable 'b' cannot be used as object
}

non-valid-fetch

当编译器检测到正在对非数组或-对象值进行’fetch’操作时引发:

变量整数’b’用作数组
public function some()
{
    var b = 1.2, a;
    fetch a, b[0];
}

invalid-array-index

当编译器检测到使用了无效的数组索引时引发:

public function some(var a)
{
    var b = [];
    let a[b] = true;
}

non-array-append

当编译器检测到一个元素被附加到一个非数组变量时引发:

public function some()
{
    var b = false;
    let b[] = "some value";
}