Those errors you want are printed automatically by PHP and probably handled nicely with a set_error_handler function. There's no way you can simulate the same behavior yourself (possibly without nonsense hacks). Therefore you are forced to go with your exception way.
There's an exception that you should be aware of: type hinting; that can only be used with arrays, classes, objects and callables (functions):
public function acceptArray(array $array);
public function acceptObject(object $o);
public function acceptClass(MyClass $o);
public function acceptCallback(callable $f);
These functions if called with any other type of variable will complain almost like the specific error you posted.
The hacks I was talking about earlier might include redefining every type yourself:
class Int {...}
class String {...}
class Float {...}
class Bool {...}
and then use it like that:
$bool = new Bool(true);
acceptString($bool); // public function acceptString(String $s);
will trigger an error. But that's just not how PHP was supposed to work. Therefore I still suggest you to go with your initial idea.