在创建PHP适配器时,我读取的所有源都使用以下语法:
class Adapter {
private $object;
public function __construct(**OriginalClass** $obj) {
$this->object = $obj;
...
我不明白为什么我必须在适配器构造函数参数中声明类的名称,就在对象本身之前。我不能只使用... __construct($obj) {
,因为当作为参数传递时,对象将被实例化?
答案 0 :(得分:1)
声明类名会强制接受参数实例。
__construct(OriginalClass $obj)
这会强制传递OriginalClass
。如果将DifferentClass
作为构造函数参数传递,代码将无法编译/运行。
答案 1 :(得分:1)
**OriginalClass**
部分称为type hint,它将构造函数参数限制为特定类的对象。因此,在您的情况下,它确保您的Adapter类只能用于特定的类。