作为参数传递时,您可以显式实例化一个对象吗?

Can you implicitly instaniate an object when passing as a a parameter?

在这些人的建议下,我正在努力学习oop php。

我找到了一个通过社交媒体示例展示真实世界实施的网站,我通读了大部分内容。

但是我在 this page.

上遇到了可能只是替代语法的内容

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

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

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

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

    return $friend;
  }

方法 getFriend 来自 relation class,并且该方法的参数 Relationship $rel 我相信是 Relationship class 的一个实例。

然而没有

$rel = new Relationship

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

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

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

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

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