assertChecks if assertion is &false;
&reftitle.description;
PHP 5 and 7boolassertmixedassertionstringdescriptionPHP 7boolassertmixedassertionThrowableexceptionassert will check the given
assertion and take appropriate action if
its result is &false;.
Traditional assertions (PHP 5 and 7)
If the assertion is given as a string it
will be evaluated as PHP code by assert.
If you pass a boolean condition as assertion,
this condition will not be passed as a parameter to the assertion callback
which you may have defined with assert_options.
Rather, the callback will receive an empty string.
Assertions should be used as a debugging feature only. You may
use them for sanity-checks that test for conditions that should
always be &true; and that indicate some programming errors if not
or to check for the presence of certain features like extension
functions or certain system limits and features.
Assertions should not be used for normal runtime operations like
input parameter checks. As a rule of thumb your code should
always be able to work correctly if assertion checking is not
activated.
The behavior of assert may be configured by
assert_options or by .ini-settings described
in that functions manual page.
The assert_options function and/or
ASSERT_CALLBACK configuration directive allow a
callback function to be set to handle failed assertions.
assert callbacks are particularly useful for
building automated test suites because they allow you to easily
capture the code passed to the assertion, along with information
on where the assertion was made. While this information can be
captured via other methods, using assertions makes it much faster
and easier!
The callback function should accept three arguments. The first
argument will contain the file the assertion failed in. The
second argument will contain the line the assertion failed on and
the third argument will contain the expression that failed (if
any — literal values such as 1 or "two" will not be passed via
this argument). Users of PHP 5.4.8 and later may also provide a fourth
optional argument, which will contain the
description given to assert, if
it was set.
Expectations (PHP 7 only)assert is a language construct in PHP 7, allowing for
the definition of expectations: assertions that take effect in development
and testing environments, but are optimised away to have zero cost in
production.
While assert_options can still be used to control
behaviour as described above for backward compatibility reasons, PHP 7
only code should use the two new configuration directives to control
the behaviour of assert and not call
assert_options.
PHP 7 configuration directives for assertDirectiveDefault valuePossible values
zend.assertions
11: generate and execute code (development mode)
0: generate code but jump around it at runtime
-1: do not generate code (production mode)
assert.exception
01: throw when the assertion fails, either by
throwing the object provided as the exception
or by throwing a new AssertionError object if
exception wasn't provided
0: use or generate a
Throwable as described above, but only
generate a warning based on that object rather than throwing it
(compatible with PHP 5 behaviour)
&reftitle.parameters;
assertion
The assertion. In PHP 5, this must be either a string to
be evaluated or a bool to be tested. In PHP 7, this may
also be any expression that returns a value, which will be executed and
the result used to indicate whether the assertion succeeded or failed.
Using string as the assertion is
DEPRECATED as of PHP 7.2.0 and REMOVED as of PHP 8.0.0.
description
An optional description that will be included in the failure message if
the assertion fails. From PHP 7, if no
description is provided, a default description equal to the source code
for the invocation of assert is provided.
exception
In PHP 7, the second parameter can be a
Throwable object instead of a descriptive
string, in which case this is the object that will be
thrown if the assertion fails and the
assert.exception
configuration directive is enabled.
&reftitle.returnvalues;
&false; if the assertion is false, &true; otherwise.
&reftitle.changelog;
&Version;&Description;8.0.0assert will no longer evaluate string arguments, instead they will be
treated like any other argument. assert($a == $b) should be used instead of
assert('$a == $b'). The assert.quiet_eval &php.ini; directive and
the ASSERT_QUIET_EVAL constant have also been removed, as they would no longer
have any effect.
8.0.0
Declaring a function called assert() inside a namespace is
no longer allowed, and issues E_COMPILE_ERROR.
7.3.0
Declaring a function called assert() inside a namespace
became deprecated. Such declaration now emits an E_DEPRECATED.
7.2.0
Usage of a string as the assertion
became deprecated. It now emits an E_DEPRECATED
notice when both assert.active
and zend.assertions are set
to 1.
7.0.0assert is now a language construct and not a
function. assertion can now be an expression.
The second parameter is now interpreted either as an
exception (if a
Throwable object is given), or as the
description supported from PHP 5.4.8 onwards.
&reftitle.examples;
Traditional assertions (PHP 5 and 7)Handle a failed assertion with a custom handler
Assertion Failed:
File '$file'
Line '$line'
Code '$code' ";
}
// Set up the callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
// Make an assertion that should fail
assert('mysql_query("")');
?>
]]>
Using a custom handler to print a description
]]>
&example.outputs;
Expectations (PHP 7 only)Expectations without a custom exception
]]>
With zend.assertions set to 0,
the above example will output:
With zend.assertions set to 1
and assert.exception set to 0,
the above example will output:
With zend.assertions set to 1
and assert.exception set to 1,
the above example will output:
Expectations with a custom exception
]]>
With zend.assertions set to 0,
the above example will output:
With zend.assertions set to 1
and assert.exception set to 0,
the above example will output:
With zend.assertions set to 1
and assert.exception set to 1,
the above example will output:
&reftitle.seealso;
assert_options