PHP的断言语句与大多数其他语言的行为不同.
assert('return false');
实际上计算字符串然后断言其结果(false).
它不是将参数与true进行比较,而是通过检查参数的额外步骤,如果是评估它的字符串,则执行比较.
确实非常奇怪.
我的问题不在于理解行为,我的问题是出现这种行为的正当理由,尤其是.因为你现在必须做额外的思维工作......"这会评估成一个字符串吗?"
当断言检查关闭时,字符串断言的优点是开销较少,而当断言失败时,包含断言表达式的消息.这意味着如果您将布尔条件作为断言传递,则此条件不会显示为您可能已使用assert_options()函数定义的断言函数的参数,则在调用该处理函数之前将条件转换为字符串,并且boolean FALSE被转换为空字符串.
来自http://www.php.net/manual/en/function.assert.php