如何仅在PHP方法参数中声明String?

时间:2013-02-08 10:05:02

标签: php string type-hinting

我正在尝试使用此方法:

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

然后我收到此错误:

  

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

显然PHP正在将string解释为类名。是否有类似声明的解决方案?

2 个答案:

答案 0 :(得分:5)

只能在对象上使用Typehinting,但数组除外。

来自Manual

  

类型提示不能与标量类型(如int或string)一起使用。也不允许特征。

答案 1 :(得分:1)

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

如果你真的想确定它是一个字符串,请将gettype()cast变量用于字符串。

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

  

不是将变量转换为字符串,而是也可以   用双引号括起变量。

$foo = 10;            // $foo is an integer
$str = "$foo";        // $str is a string
$fst = (string) $foo; // $fst is also a string