如何在第二类中使用第一类属性和方法?

时间:2011-01-18 23:44:37

标签: php object scope

我有两节课。让我们称它们为'Class_A'和'Class_B'。我想在'Class B'中使用'Class_A'属性和方法。像这样......

$a = new Class_A;


class Class_B {

    function __construct() {

        $a->foo = 2;

        $a->magic();

    }

}

当然,它不起作用。处理它的最佳做法是什么?

  • 'global'keyword?
  • 将'Class_A'的属性和方法设为静态?
  • 另一种方式......?

2 个答案:

答案 0 :(得分:3)

Dependency injection

$a = new Class_A();

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

$b = new Class_B($a);

答案 1 :(得分:0)

如果您需要类Class_A的实例,请将其传递给类Class_B的构造函数:

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(例如香蕉是水果),那么继承可能会更好。