Aparentemente un "string" no es un "string" en PHP.
php:
<?php
interface IPhpSucks {
function foo(string $bar);
}
class PhpSucks implements IPhpSucks {
function foo(string $bar) {}
}
$f = new PhpSucks();
$f->foo('demo');
interface IPhpSucks {
function foo(string $bar);
}
class PhpSucks implements IPhpSucks {
function foo(string $bar) {}
}
$f = new PhpSucks();
$f->foo('demo');
Al ejecutar ese script, se obtiene un lindo error.
Catchable fatal error: Argument 1 passed to PhpSucks::foo() must be an instance of string, string given, called in demo.php on line 10 and defined in demo.php on line 6
Actualización: Averiguando un poco más, al parecer esta característica (Type Hinting) funciona sólo para nombres de clases o el tipo array
(s/PhpSucks/ISuckInPhp/).