Когда я запускаю этот кодТип намекая и статические методы
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();
Я получаю ошибку
Catchable fatal error: Argument 1 passed to Kernel::handle() must be an instance of Settings, array given, called in....
Означает ли это, что тип намекая работает только для случаев, но не для статических методов? Если теперь, как достичь типа намека на статические методы?
'ручку()' ожидает объект класса 'Settings' но вы просто предоставляя простой массив (возвращаемое значение из 'appConfig()') – x4rf41
возвращаемое значение appConfig не является экземпляром класса Settings, вы не можете дать массив типов методу, который хочет получить настройки типа – steven