bien que ce soit facultatif, il est normalement possible de typer les paramètres attendus d'une fonction ou méthode, comme par exemple en Java.
Exemple :
class Foo{}
class Bar
{
public function __construct(Foo $foo){}
}
class Plop
{
public function __construct(string $text){}
}
$myBar = new Bar(new Foo());
$myPlop = new Plop("Hello world !");
$myBar, pas de souci. Mais $myPlop, erreur :
Catchable fatal error: Argument 1 passed to Plop::__construct() must be an instance of string, string (…)