Sup*_*icy 10 php type-hinting arrayaccess
是否可以允许Array或实现ArrayAccess的对象?
例如:
class Config implements ArrayAccess {
...
}
class I_Use_A_Config
{
public function __construct(Array $test)
...
}
Run Code Online (Sandbox Code Playgroud)
我希望能够传入Array或ArrayAccess.
除了手动检查参数类型之外,还有一种干净的方法吗?
Sve*_*sen 13
不,没有"干净"的方式.
的array类型是基本类型.实现ArrayAccess接口的对象基于类,也称为复合类型.没有包含两者的类型提示.
由于您使用的ArrayAccess是数组,您可以将其强制转换.例如:
$config = new Config;
$lol = new I_Use_A_Config( (array) $config);
Run Code Online (Sandbox Code Playgroud)
如果这不是一个选项(你想要按Config原样使用对象),那么只需删除类型提示并检查它是一个数组还是一个ArrayAccess.我知道你想避免这种情况,但这不是什么大问题.它只是几行而且,当说完所有时,无关紧要.
PHP 8.0+
您可以使用array和的并集ArrayAccess。
class I_Use_A_Config
{
public function __construct(array|ArrayAccess $test)
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4092 次 |
| 最近记录: |