在PHP中的对象类型提示
我需要帮助理解对象的类型提示.我尝试搜索stackoverflow但找不到任何其他用户解释其使用的东西.如果你找到一个让我知道.
首先让我解释一下我的理解. 当使用类型提示数组时,用户必须输入一个数组参数,否则会抛出错误. <?php function something(array $myval) { return print_r($myval); } 当我用一个对象尝试它时,我得到一个错误.我可能写错了,但请帮助我理解如何写它. <?php class Person { function name($name) { return $name; } } $foo = new Person(); function doSomething(Person $lname) { return $lname->name; } doSomething('smith'); 根据我的理解,当一个函数类型提示对象Person(在这个例子中)时,参数变量将有权访问对象方法,就像实例化一个对象并回显其方法一样.我错了,但请纠正我.我的另一个问题是,如果在Person参数可以访问Person方法的情况下这是真的,那么只会实例化Person类并手动回显方法.
使用你的例子:
$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 "<p>" . $song->lyrics . "</p>"; } 现在,再次,该函数只能接受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()时暗示的对象类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |