命名空间作为php中函数的参数

Mat*_*tto 3 php oop parameters namespaces

我正在调试其他人的代码,这实际上给了我代码的灵感,并允许我编写一个很好的插件.

问题是,现在我的插件工作正常,但我不太明白为什么.

我试图了解将名称空间作为参数添加到函数中的好处和后果是什么.

在我的代码中,我正在分析这部分:

public function check_shipping(Order $order, $option) {}
Run Code Online (Sandbox Code Playgroud)

Order是我在代码中导入的命名空间:

use Store\Model\Order;
Run Code Online (Sandbox Code Playgroud)

$order$option实际上是两个对象,这是在我的函数参数.

就是这样,你知道,我正在使用ExpressionEngine并使用来自第三方插件的特定钩子.

基本上,我的问题是:我的命名空间和我的函数中的两个参数之间的关系是什么?

前两个参数是否有关系,因为它们之间没有逗号?

Com*_*ndZ 6

鉴于此方法: public function check_shipping(Order $order, $option) {}

我们看到这Order$order参数的typehint .Order$order不是两个不同的参数. Order正在定义的类型$order.

以下是有关定义函数参数类型PHP文档.您会注意到PHP的功能因您运行的PHP版本而异.PHP 7引入标typehints如string,int等,但因为5.1,你可以typehint因为PHP 5.0对象和数组.

$option没有typehint但你可以在,取决于它的类型和你的PHP版本之后添加一个.

定义typehint时,可以引用完整的命名空间: public function check_shipping(\Store\Model\Order $order, $option) {}

这样您就不必使用use声明导入命名空间.(不是说这是你想在任何特定情况下做的事情.我只是说你可以这样做)