I'm not so sure I like the way you're essentially simulating a bunch of constants. It might be better to just define (similarly to PDO)  some constants at the class level: PARAM_BOOL, PARAM_INT, PARAM_STR. PARAM_NULL.

But we're not limited to just the PDO types either. We could define something more useful like PARAM_NULLSTR, which maps to PDO::PARAM_NULL when === null or "", or PDO::PARAM_STR when not null.