Как использовать свойства и методы первого класса во втором классе? - PullRequest
0 голосов
/ 19 января 2011

У меня есть два класса. Давайте назовем их «Class_A» и «Class_B». Я хочу использовать свойства и методы Class_A в классе B. Вот так ...

$a = new Class_A;


class Class_B {

    function __construct() {

        $a->foo = 2;

        $a->magic();

    }

}

Конечно, это не работает. Как лучше всего с этим бороться?

  • глобальное ключевое слово?
  • Сделать свойства и методы класса Class_A статичными?
  • Другой способ ...?

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Зависимость инъекций

$a = new Class_A();

class Class_B {
    function __construct($x) {
          $x->foo = 2;
          $x->magic();
    }
} 

$b = new Class_B($a);
0 голосов
/ 19 января 2011

Если вам нужен экземпляр класса Class_A, то передайте его конструктору класса Class_B s:

class Class_B {
    function __construct($a) {
        $a->foo = 2;
        $a->magic();
    }
}

$a_instance = new Class_A();

$b = new Class_B($a_instance);

Если для выполнения задач не требуется создавать экземпляр класса Class_A, определите вместо него свойства и методы как статические и вызовите их с помощью Class_A::method();

Избегайте global с. Если Class_B является также Class_B (например, банан - это фрукт), то вам, вероятно, лучше с наследованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...