I am currently writing code and want to make sure all the params that get passed to a function/method are valid. Since I am writing in PHP I don't have access to all the facilities of other languages like C, C++ or Java to check for parameters values and types
public function inscriptionExists($sectionId, $userId) // PHP
vs.
public boolean inscriptionExists(int sectionId, int userId) // Java
So I have to rely on exceptions if I want to make sure that my params are both integers.
Since I have a lot of places where I need to check for param validity, what would be the best way to create a validation/exception machine and avoid code duplication?
I was thinking on a static factory (since I don't want to pass it to all of my classes) with a signature like:
public static function factory ($value, $valueType, $exceptionType = 'InvalidArgumentException');
Which would then call the right sub process to validate based on the type.
Am I on the right way, or am I going completely off the road and overthinking my problem?
Best Answer
PHP provides type hinting for objects and arrays. Unfortunately, not for scalar types such as
string
orint
.There are various approaches. One is to use assert statements :
One needs to ensure assert is active at least during development :
assert_options(ASSERT_ACTIVE, 1)
You could write a utility class along these lines
and then