При создании адаптера PHP все источники, которые я читаю, используют следующий синтаксис:
class Adapter {
private $object;
public function __construct(**OriginalClass** $obj) {
$this->object = $obj;
...
Я не понимаю, почему я должен указывать имя класса в аргументе конструктора адаптера непосредственно перед самим объектом. Я не мог просто использовать ... __construct($obj) {
, поскольку объект будет уже создан при передаче в качестве аргумента?
**OriginalClass**
часть называется подсказка типа которые ограничивают аргумент конструктора объектом определенного класса. Итак, в вашем случае это гарантирует, что ваш класс Adapter может быть использован только для определенного класса.
Указание имени класса заставляет принятый экземпляр параметра.
__construct(OriginalClass $obj)
Это силы OriginalClass
быть переданным. Если вы пройдете DifferentClass
в качестве параметра конструктора код не будет компилироваться / выполняться.