【发布时间】:2021-12-07 17:06:24
【问题描述】:
我有时看到开发人员将一个类的名称作为参数放在另一个类的方法中。
我想知道这是什么意思,它类似于继承吗?这是否使该方法可以使用作为参数传递的该类的方法和字段?
<?php
declare(strict_types = 1);
class SimpleClass
{
public function sayHello(): void
{
echo("Hello!");
}
}
class Main
{
public static function main(SimpleClass): void
{
//sayHello();
}
}
我测试了上面的代码,但是报错了。但是,我已经看到一些开发人员使用此功能,所以我想了解它的含义。
【问题讨论】:
-
function main(SimpleClass): void {}无效,但function main(SimpleClass $something): void是带有类型提示的参数。如果您传递给它的不是SomeClass的实例,它将导致错误。 php.net/manual/en/language.types.declarations.php -
@Sammitch 什么情况下适合使用类的实例作为参数?
-
类型提示几乎一直都是个好主意,随着 PHP 8 引入复合类型,没有理由不这样做。