在函数声明的签名中在参数名称之前指定类名会有什么影响?

Kov*_*ovo 2 php

之间有什么区别:

public function init(a_class_name $classObj)
Run Code Online (Sandbox Code Playgroud)

public function init($classObj)
Run Code Online (Sandbox Code Playgroud)

不同之处在于示例1指定了我得到的对象类型.我的问题是:php仍然通过引用传递对象(默认行为)或者是示例1克隆对象的一些奇怪的快捷方式.我只是问,因为在更严格的语言(C,Java)中,示例1非常简单(并且是唯一可行的示例).在PHP中它并不那么清楚,并且这两种方法都在PHP文档的不同位置使用.

谢谢.

Asa*_*aph 5

这被称为aa 类型提示.

PHP 5引入了类型提示.函数现在能够强制参数为对象(通过在函数原型中指定类的名称),接口,数组(自PHP 5.1起)或可调用(自PHP 5.4起).

- http://php.net/manual/en/language.oop5.typehinting.php

在这两种情况下(有和没有类型提示),对象通过引用传递.这不会改变.