Your example `$app->sendRequest(null, null, null, false)` will not break in either code because we're not type hinting in either.  Just to make sure we're talking about the same thing, when I say type hinting, I mean adding `Array` to the method signature:

    public function sendRequest( $controllerName = null, $methodName = null, Array $params = array(), $internal = true )

I don't do this in my change set, and neither does the original.  Both the versions worth when $params is `null`, or an array, the expected inputs.

In the error case that someone sends us unexpected input, a string/int/object, my code *will* fail on line 584, where as the old code will accept this silently and keep going.  I consider this a good thing.  This is far better since we immediately know there is a problem, rather than silently letting bad data into the system and ending up with a mysterious, hard to track down problem.

AFACT, the reason type hinting came in to this at all was because you wanted to use it to catch the problem earlier and explicitly, and my response was that this would change how this code is currently called and would require updating all the places this code is called.  Also, I don't see any current best practices that say we need to always explicitly verify that every array is actually an array.  We assume this all the time, e.g., I don't see that we were testing $_GET or $_POST to make sure they are arrays before using them.