use of assertions for type checking in php?
- by user151841
I do some checking of arguments in my classes in php using exception-throwing functions. I have functions that do a basic check ( ===, in_array etc ) and throw an exception on false. So I can do assertNumeric($argument, "\$argument is not numeric."); instead of
if ( ! is_numeric($argument) ) {
throw new Exception("\$argument is not numeric.");
}
Saves some typing
I was reading in the comments of the php manual page on assert() that
As noted on Wikipedia - "assertions
are primarily a development tool, they
are often disabled when a program is
released to the public." and
"Assertions should be used to document
logically impossible situations and
discover programming errors— if the
'impossible' occurs, then something
fundamental is clearly wrong. This is
distinct from error handling: most
error conditions are possible,
although some may be extremely
unlikely to occur in practice. Using
assertions as a general-purpose error
handling mechanism is usually unwise:
assertions do not allow for graceful
recovery from errors, and an assertion
failure will often halt the program's
execution abruptly. Assertions also do
not display a user-friendly error
message."
This means that the advice given by
"gk at proliberty dot com" to force
assertions to be enabled, even when
they have been disabled manually, goes
against best practices of only using
them as a development tool
So, am I 'doing it wrong'? What other/better ways of doing this are there?