【发布时间】:2021-08-23 13:59:27
【问题描述】:
我在 PHP 8.0.7 中使用类型声明和一个简单的类,例如:
<?php
class KV {
public function __construct(private array $storage = []) {}
public function put(string $key, string $value): bool {
$this->storage[$key] = $value;
echo "successfully put {$key} => {$value}" . PHP_EOL;
return true;
}
public function getStorage(): array {
return $this->storage;
}
}
$kv = new KV();
$kv->put('foo', 12); // works
$kv->put('bar', 123.2); // works
$kv->put('car', true); // works
print_r($kv->getStorage());
但是,令我惊讶的是,当我尝试调用 $kv->put('foo', 12); 时,这并没有因参数类型无效而出错。它应该,因为12 不是字符串,对吧?我在这里想念什么? PHP 中有明确的类型声明,用于 int、float、bool、object、array 和混合等。
【问题讨论】: