Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在使用冒号(:)的functionName旁边使用className的目的是什么_Php - Fatal编程技术网

Php 在使用冒号(:)的functionName旁边使用className的目的是什么

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(); } 如果您按如下方

请参阅下面的代码以了解。请解释我应该在oop中何时使用此机制

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