2017-08-13 58 views
0

在这里的建议,我已经尝试学习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我相信是一个关系类的实例。然而没有

$rel = new Relationship 

任何地方。这是通过引用传递一个对象?我知道这是一个新手问题,所以谢谢,是的,我看过手册的objects and classes部分,所以如果我不看手册的正确部分,并且可以给我一个正确方向的指针,谢谢。

回答

1

看来,如果引用一些所谓类型暗示的函数参数类型声明

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

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

+0

所以即使{$ rel}不是已经是一个类的实例化,这个工作吗?是否因为对象已经存储在内存中? – user74091

+0

或者我相信你是对的,但你能详细说明一下吗? – user74091

+1

对象$ rel必须已经被实例化并且具有Relationship类型才能传递给此方法。这不会实例化任何东西。它只是几天“所有变量不是类型关系,在这里不受欢迎”。 – DrDamnit

相关问题