【问题标题】:What does it mean to call a class inside a method as a parameter?将方法内部的类作为参数调用是什么意思?
【发布时间】: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 引入复合类型,没有理由不这样做。

标签: php oop


【解决方案1】:

也许你正在考虑这样的事情......

class printable
{
    public function runHello(simpleClass $obj): void
    {
        $obj.sayHello();
    }
}

“printable”类有一个成员函数“runHello”,它接受一个“simpleClass”对象作为参数。

你的代码(上面写的)有一个错误,因为你传递了一个类而没有告诉编译器你将在 main 中调用那个类对象:你需要一个 $variable 在文本“main(SimpleClass”之后)之前"

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2016-03-20
    • 2013-09-22
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多