我有两节课。让我们称它们为'Class_A'和'Class_B'。我想在'Class B'中使用'Class_A'属性和方法。像这样......
$a = new Class_A;
class Class_B {
function __construct() {
$a->foo = 2;
$a->magic();
}
}
当然,它不起作用。处理它的最佳做法是什么?
答案 0 :(得分:3)
$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
(例如香蕉是水果),那么继承可能会更好。