【问题标题】:Why there is a class name before the argument name in a function declaration?为什么在函数声明中的参数名称之前有一个类名?
【发布时间】:2016-04-25 00:34:13
【问题描述】:

我在 MVC 框架中看到了这一点。

Class Hotel{

function add(AddRequest $post){
$this->save($post->all());
}

}

这里的“AddRequest”是一个被继承的类。我不知道它的概念。我只知道它绑定/验证在函数中使用之前已经传递给函数的参数。任何人都可以解释清楚吗?这段代码中的“AddRequest”是如何实现的?

【问题讨论】:

    标签: php class laravel model-view-controller yii


    【解决方案1】:

    这是一个type declaration(以前称为类型提示)。该函数将拒绝传递给不属于AddRequest 类型的函数的$post

    如果您自己没有显式地注入它,那么框架很可能正在使用reflection 来自动确定并注入所需的依赖项。例如,版本 5 中的 Laravel uses this fairly extensively

    【讨论】:

    • 只是想知道它是如何做到的。如果没有传递参数,自动类注入。听起来很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    相关资源
    最近更新 更多