Quand je lance ce codetype hinting et méthodes statiques
class Kernel
{
private $settings = array();
public function handle(Settings $conf)
{
$this->settings = $conf;
return $this;
}
public function run()
{
var_dump($this->settings);
}
}
class Settings
{
public static function appConfig()
{
return array(
'database' => array(
'hostname' => 'localhost',
'username' => 'root',
'password' => 'test',
'database' => 'testdb'
)
);
}
}
$kernel = new Kernel;
$kernel->handle(Settings::appConfig())->run();
J'obtiens l'erreur
Catchable fatal error: Argument 1 passed to Kernel::handle() must be an instance of Settings, array given, called in....
Est-ce que cela signifie que le type hinting ne fonctionne que pour les instances, mais pas pour les méthodes statiques? Si maintenant, comment obtenir des indications de type pour les méthodes statiques?
'poignée()' attend un objet de la classe 'Settings' mais vous simplement fournir un tableau simple (la valeur de retour de 'appConfig()') – x4rf41
la valeur de retour de appConfig n'est pas une instance de la classe Settings, vous ne pouvez pas donner un tableau de type à une méthode qui veut obtenir un paramétrage de type – steven