1

我正在尝试使用这种方法:

public function setMessage(string $message){
    $this->message = $message;
}

然后我得到这个错误:

可捕获的致命错误:传递给 notifier::setMessage() 的参数 1 必须是字符串的实例,给定的字符串

显然 PHP 被解释string为类名。是否有类似的解决方案来做出这种声明?

4

2 回答 2

5

类型提示只能用于对象,数组除外。

手册

类型提示不能用于标量类型,例如 int 或 string。特征也是不允许的。

于 2013-02-08T10:07:11.650 回答
1

PHP 是一种松散类型的语言,它并不真正关心类型并且无论如何都会猜测。您只能在函数声明中将变量限制为类,因此删除string一切都会好起来的。:)

如果您真的想确定它是一个字符串,请使用gettype()变量转换为字符串。

注意(来自 PHP.net 上的 type-juggline):

除了将变量转换为字符串之外,还可以将变量括在双引号中。

$foo = 10;            // $foo is an integer
$str = "$foo";        // $str is a string
$fst = (string) $foo; // $fst is also a string
于 2013-02-08T10:06:31.960 回答