Экземпляр класса в конструкторе

0

Я не уверен в моем подходе. A имеют два класса и функции вызова первого класса во втором классе:

class A {

    public function aClassFunction() {...}

}


class B {

    private $aClass;

    public function __construct() {
        $this->aClass = new A();
    }

    public function bClassFunction() {
        $test = $this->aClass->aClassFunction();
    }
}

Он просто работает, но выглядит "подозрительно".

  • 0
    Как вы сказали: это работает. Но если вы хотите, вы можете просто использовать extends следующим образом: class B extends A а затем вы можете использовать функцию из класса A в классе B
  • 0
    почему бы не расширить или еще лучше передать A как зависимость через конструктор B? Theres даже черты .. попробуйте abit больше исследовать
Показать ещё 1 комментарий
Теги:
instance
constructor

2 ответа

1
Лучший ответ

Вы можете использовать инъекцию зависимостей в классе B Этот подход помогает вам высмеивать классы в тесте.

class B {

    private $aClass;

    public function __construct(A $a) {
        $this->aClass = $a;
    }

    public function bClassFunction() {
        $test = $this->aClass->aClassFunction();
    }
}

$b = new B(new A());
  • 0
    Я то, что я искал. Большое спасибо...
1

Выглядит "подозрительно" как зависимость. Почему бы не ввести зависимость?

class B {

    private $aClass;

    public function __construct($object) {
        $this->aClass = $object;
    }

    public function bClassFunction() {
        $test = $this->aClass->aClassFunction();
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню