php中的对象类型暗示
我需要帮助理解对象的类型暗示。我尝试搜索stackoverflow,但找不到任何有其他用户解释其用法的内容。如果你找到了,请告诉我。 首先让我解释一下我所理解的 当使用数组的类型提示时,用户必须键入一个数组参数,否则将抛出错误php中的对象类型暗示,php,type-hinting,Php,Type Hinting,我需要帮助理解对象的类型暗示。我尝试搜索stackoverflow,但找不到任何有其他用户解释其用法的内容。如果你找到了,请告诉我。 首先让我解释一下我所理解的 当使用数组的类型提示时,用户必须键入一个数组参数,否则将抛出错误 <?php function something(array $myval) { return print_r($myval); } 使用您的示例: $foo = new Person; $foo->name = 'smith'; $somethi
<?php
function something(array $myval)
{
return print_r($myval);
}
使用您的示例:
$foo = new Person;
$foo->name = 'smith';
$something = doSomething($foo);
echo $something;
类型暗示意味着您传递的任何内容都必须是所暗示类型的实例(与类型相同)
因此,如果向Person
提示,则只接受该类型的对象
在您给出的示例中,您尝试传递字符串而不是对象
更新
“类型暗示”强制您只传递特定类型的对象。这可以防止您传递不兼容的值,如果您正在与团队合作,则会创建一个标准
假设您有一个函数sing()
。您希望确保它只接受类型为Song
的对象
让我们创建我们的类歌曲
:
class Song{
public $title;
public $lyrics;
}
我们的函数sing()。我们将键入hint toSong
,以确保不能向其传递其他类型的参数:
function sing(Song $song){
echo "Singing the song called " .$song->title;
echo "<p>" . $song->lyrics . "</p>";
}
然后我们呼吁:
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()
时所暗示的对象类型,因为'smith'
是一个字符串而不是一个对象,所以您可能会得到一个重复的错误。您必须将$foo
传递到doSomething()
才能使其工作。“我尝试搜索stackoverflow”--您尝试过搜索文档吗?所有内容都在那里,有示例。@在传递对象之前,必须实例化该对象。这就是为什么会出现错误-您刚刚传递了一个字符串。输入提示不会将传递的参数转换为对象。很抱歉,我的手指点击了鼠标,无法将其恢复为零。我将在我的计算机上尝试另一个示例,并将发布更新。由于某种原因,当我自己尝试时,我总是会出错。如果你不介意的话,你能在回答中贴一个工作样本吗?也许这会帮助我更好地理解。谢谢你!写得很好,容易理解。希望这也能帮助其他许多人:)
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($poem)