assert()期望正好1个参数,2给定

时间:2013-10-19 13:15:08

标签: php

我将两个参数传递给assert函数,如PHP教程网站上所述,并获取错误。我是这样做的:

assert('2 < 1', 'Two is less than one');

为什么会失败?

4 个答案:

答案 0 :(得分:4)

额外的第二个参数已添加到PHP 5.4.8中的assert方法中。如果您使用的是旧版本,则必须只使用一个参数。

来源:http://php.net/assert

答案 1 :(得分:4)

如果你不在php 5.4.8上,你仍然可以通过在第一个断言参数中添加注释来获得有意义的消息:

$x = 1; $y = 2;
assert('$x > $y /*x should be greater than y*/');

这给出了输出:

Warning: assert(): Assertion "$x > $y /*x should be greater than y*/" failed in ...

答案 2 :(得分:0)

在php版本5.4.8之前,没有添加断言描述参数,你使用的是什么版本的php?

http://php.net/manual/en/function.assert.php

答案 3 :(得分:0)

你应该使用这些选项,这是工作示例:

// Active assert and make it quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);

// Create a handler function
function my_assert_handler($file, $line, $code, $desc = null)
{
    echo "Assertion failed at $file:$line: $code";
    if ($desc) {
        echo ": $desc";
    }
    echo "\n";
}

// Set up the callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');

// Make an assertion that should fail
assert('2 < 1');
assert('2 < 1', 'Two is less than one');