Php 在使用冒号(:)的functionName旁边使用className的目的是什么
请参阅下面的代码以了解。请解释我应该在oop中何时使用此机制Php 在使用冒号(:)的functionName旁边使用className的目的是什么,php,Php,请参阅下面的代码以了解。请解释我应该在oop中何时使用此机制 class A { } class B { public function foo(): A { } } 在代码中,类B的foo()函数必须返回类A的对象类型,否则将引发异常。我们可以使用下面的语法定义PHP函数的返回类型 function foo(): int { return 11; } function bar(): Baz { return new Baz(); } 如果您按如下方
class A
{
}
class B
{
public function foo(): A
{
}
}
在代码中,类B的foo()函数必须返回类A的对象类型,否则将引发异常。我们可以使用下面的语法定义PHP函数的返回类型
function foo(): int
{
return 11;
}
function bar(): Baz
{
return new Baz();
}
如果您按如下方式运行代码-
<?php
class A
{
}
class B
{
public function foo(): A
{
}
}
$b = new B();
echo $b->foo();
?>
这确保了在PHP中严格键入。我希望你已经明白了答案。
您可以在这里阅读更多关于为什么要使用严格键入的内容这是继承的概念。请给出一个示例。它基本上告诉您使用父类函数foo,然后覆盖我在该函数中编写的任何内容。请与示例共享您的代码。
Fatal error: Uncaught TypeError: B::foo(): Return value must be of type A, none returned in D:\xampp\htdocs\test.php:16 Stack trace: #0 D:\xampp\htdocs\test.php(20): B->foo() #1 {main} thrown in D:\xampp\htdocs\test.php on line 16