Args checking library updated with a C-like passion for signals.
The problem
While the previous versions of the Args library did allow for the specification of the exception to be thrown on failure using the below method
Arg::set_exception($exception);
I needed a more precise and granular way to control which exception is thrown when.
Else throw
On its own the library will throw exceptions specific to the first check that has failed
Arg::_('foo', 'Argument')->is_string()->is_numeric();
// will throw new InvalidArgumentException('Argument is not numeric')
but the else_throw
method allows for a downright maniacal control over what’s thrown when
Arg::_('foo', 'Argument')
->is_string()->else_throw(new NotAStringException())
->is_numeric()->else_throw(new NotNumericException());
// will throw new NotNumericException()
Energy efficiency
The new method allows for more memory efficiency allowing an exception class and a message to be specified in place of requiring the instantiation of a new instance that might never be used.
Arg::_('foo', 'Argument')
->is_string()->else_throw('NotAStringException'
->is_numeric()->else_throw('NotNumericException');
// will throw new NotNumericException()
Furthermore the Exception
part of the class name can be left out as well
Arg::_('foo', 'Argument')
->is_string()->else_throw('NotAString'
->is_numeric()->else_throw('NotNumeric');
// will throw new NotNumericException()
Ready for an exceptional fun.