php-src/Zend/tests/empty_with_expr.phpt
Nikita Popov ec061a93c5 Allow arbitrary expressions for empty()
This change is as per RFC https://wiki.php.net/rfc/empty_isset_exprs.

The change allows passing the result of function calls and other
expressions to the empty() language construct. This is accomplished by
simply rewriting empty(expr) to !expr.

The change does not affect the suppression of errors when using empty()
on variables. empty($undefinedVar) will continue not to throw errors.
When an expression is used inside empty() on the other hand, errors will
not be suppressed. Thus empty($undefinedVar + $somethingElse) *will*
throw a notice.

The change also does not make empty() into a real function, so using
'empty' as a callback is still not possible.

In addition to the empty() changes the commit adds nicer error messages
when isset() is used on function call results or other expressions.
2012-05-13 14:56:51 +02:00

33 lines
554 B
PHP

--TEST--
empty() with arbitrary expressions
--FILE--
<?php
function getEmptyArray() { return []; }
function getNonEmptyArray() { return [1, 2, 3]; }
var_dump(empty([]));
var_dump(empty([1, 2, 3]));
var_dump(empty(getEmptyArray()));
var_dump(empty(getNonEmptyArray()));
var_dump(empty([] + []));
var_dump(empty([1, 2, 3] + []));
var_dump(empty("string"));
var_dump(empty(""));
var_dump(empty(true));
var_dump(empty(false));
--EXPECT--
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)