使用你的例子:
$foo = new Person;
$foo->name = 'smith';
$something = doSomething($foo);
echo $something;
类型提示意味着您传递的任何内容必须是您提示的类型(与其类型相同)的实例.
因此,如果您提示人员,则只接受该类型的对象.
在您给出的示例中,您尝试传递字符串而不是对象.
更新
“类型提示”强制您仅传递特定类型的对象.这可以防止您传递不兼容的值,并在您与团队等合作时创建标准.
所以,假设你有一个函数sing().您希望确保它只接受Song类型的对象.
让我们创建我们的课程歌曲:
class Song{
public $title;
public $lyrics;
}
和我们的功能唱歌().我们将向Song输入提示,以确保不能传递其他类型的参数:
function sing(Song $song){
echo "Singing the song called " .$song->title;
echo "
" . $song->lyrics . "
";}
现在,再次,该函数只能接受Song类型的对象,因为这是我们在声明中所暗示的(Song $song).
让我们创建一首歌并传递它:
$hit = new Song;
$hit->title = "Beat it!";
$hit->lyrics = "It doesn't matter who's wrong or right... just beat it!";
然后我们打电话:
sing($hit);
哪个会好起来的.
现在,让我们说我们有一首诗歌:
class Poem{
public $title;
public $lyrics;
}
$poem = new Poem;
$poem->title = "Look at the sea";
$poem->lyrics = "How blue, blue like the sky, in which we fly..."
如果我们尝试使用我们的函数’sing’来调用它;
sing($poem)
我们会得到一个错误,因为$poem不是我们在创建函数sing()时暗示的对象类型.