I have noticed that there is a lot of commotion around the implementation of the scalar type hints. I haven't read all the discussions and i am certainly not a php core expert. I do however use (and love) php for a long time now.
So here is my take on how i think it should work.
Keep the default behavior so that legacy code keeps working and if you want to build a class/function that needs some stricter type hinting, then type hint it.
class Foo {}
function default_behavior($int, $string, Foo $foo = null)
{