Нет другого способа объявить параметр «смешанного типа» (например, принять значение любого типа, будь то скаляр, ссылка, экземпляр класса или даже ноль), кроме как , пропуская подсказка типа.
Это говорит о том, что вы ожидаете string
для $key
, int
для $expiration
;и любое значение для $value
(например, «смешанный»).
public function set(string $key, $value, int $expiration): bool
declare(strict_type=1)
не имеет к этому никакого отношения. Это объявление влияет только на объявления скалярных типов там, где они существуют. Если нет объявления типа, типом является mixed
, и не может быть никакого типа «приведения типов», что делает strict_types
спорным.
Обратите внимание, что предложение существовало дляпредставьте это объявление псевдотипа , но оно так и не прошло стадию черновика, поскольку не получило особенно теплого приема в группе внутренних компонентов PHP.