这里的命名空间是什么意思 ?

来源:7-2 [php]策略模式的实现和使用

frgo_03360772

2016-08-06 11:53

function setStrategy(\IMooc\UserStrategy $strategy){        $this->strategy = $strategy;    } 

这个函数传的参数是$strategy 类型是一个对象,文件所在的目录/命名空间是IMooc

UserStrategy是一个接口,我的问题是:

命名空间+接口+实现该接口的对象,这里的运行机制是怎样的,谢谢~~~

写回答 关注

2回答

  • 追逐梦想30
    2016-08-10 10:27:45
    已采纳

    这个是对类型的指定,强类型语言都是这种写法,就是指定当前函数接收的对象类型是什么,而对于php来说的话可以直接传递对象,不需要指定类型也可以。

    frgo_0...

    那可不可以认为传递的是\IMooc下的UserStrategy接口类型参数,可是这样又有矛盾了,$strategy并不是一个接口,它是一个对象啊,所以这个比较晕,难道实现接口的对象都可以以接口的形式传参么?先谢谢你的回复~~~

    2016-08-10 14:45:58

    共 1 条回复 >

  • 追逐梦想30
    2016-08-10 14:51:17

    是的,实现该接口的所有类的对象都可以传。

    frgo_0...

    受教了,我之前很少见php这么传参,所以被镇住了,非常感谢耐心解答!!

    2016-08-10 14:54:15

    共 1 条回复 >

大话PHP设计模式

帮助PHPer具备使用设计模式解决工程中复杂逻辑的能力

62160 学习 · 230 问题

查看课程

相似问题