当作为参数传递时,你可以隐含地实例化一个对象吗?

时间:2017-08-13 00:57:04

标签: php methods parameters type-hinting

根据这里的建议,我正在努力学习oop php。

我找到了一个通过社交媒体示例显示真实世界实现的网站,我正在阅读并主要通过。

但是我在this page上遇到了可能只是替代语法的内容。

我的问题是关于一个类似乎是一个对象,作为参数传递给另一个类的方法。

我通读了一些类似性质的其他stackoverflow问题,但只有this one表现出类似的语法,但只是在回答另一个问题,而不是讨论我特别询问的问题(这是位于答案中。

要清楚,从第一个链接页面中摘录代码;

public function getFriend(Relationship $rel) {
    if ($rel->getUserOne()->getUserId() === $this->loggedInUser->getUserId()) {
      $friend = $rel->getUserTwo();
    } else {
      $friend = $rel->getUserOne();
    }

    return $friend;
  }

方法 getFriend 来自关系类,该方法的参数关系$ rel 我相信是<的实例化strong>关系类。

然而没有

$rel = new Relationship

的任何地方。这是通过引用传递对象吗?

我知道这是一个新手问题所以非常感谢,是的,我确实查看了本手册的objects and classes部分,所以如果我没有查看手册的正确部分,你可以给我一个指针正确的方向,也谢谢。

1 个答案:

答案 0 :(得分:1)

您似乎正在引用函数参数的类型提示类型声明

http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration

基本上这是做什么的,是否要求变量属于Relationship类型。如果您尝试将任何其他类型的变量传递给此方法,您将收到致命错误(PHP 5)或异常(PHP 7)。