Note that Joey's code showing an example of using InvalidArgumentException uses is_int, but probably should use filter_var($int, FILTER_VALIDATE_INT).
Also, whether you should throw this function or OutOfRangeException when dealing with arrays is a bit unclear. My personal preference is to throw InvalidArgumentException.
The InvalidArgumentException class
(PHP 5 >= 5.1.0)
Introduction
Exception thrown if an argument does not match with the expected value.
Class synopsis
InvalidArgumentException
extends
LogicException
{
/* Inherited methods */
}
Levi Morrison ¶
1 year ago
Joey at anti-culture dot net ¶
2 years ago
In my opinion this exception is invaluable for validating arguments- for example providing strict typing a la C:
<?php
function tripleInteger($int)
{
if(!is_int($int))
throw new InvalidArgumentException('tripleInteger function only accepts integers. Input was: '.$int);
return $int * 3;
}
$x = tripleInteger(4); //$x == 12
$x = tripleInteger(2.5); //exception will be thrown as 2.5 is a float
$x = tripleInteger('foo'); //exception will be thrown as 'foo' is a string
$x = tripleInteger('4'); //exception will throw as '4' is also a string
?>
