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

Php 如何在第二类中使用第一类属性和方法?,php,object,scope,Php,Object,Scope,我有两节课。让我们把它们叫做“A类”和“B类”。我想在“类B”中使用“类A”属性和方法。像这样 $a = new Class_A; class Class_B { function __construct() { $a->foo = 2; $a->magic(); } } 当然,它不起作用。处理这一问题的最佳做法是什么 “全局”关键字 使“Class_A”的属性和方法保持静态 另一种方式 如果需要类class_A的

我有两节课。让我们把它们叫做“A类”和“B类”。我想在“类B”中使用“类A”属性和方法。像这样

$a = new Class_A;


class Class_B {

    function __construct() {

        $a->foo = 2;

        $a->magic();

    }

}
当然,它不起作用。处理这一问题的最佳做法是什么

  • “全局”关键字
  • 使“Class_A”的属性和方法保持静态
  • 另一种方式


如果需要类
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
s。如果
Class\u B
也是一个
Class\u B
(例如香蕉是一种水果),那么继承可能会更好。

如果需要Class
Class\u a
的实例,则将其传递给Class
Class\u 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
s。如果
Class_B
也是
Class_B
(例如香蕉是一种水果),那么继承可能会更好。

这一切都取决于您实际尝试完成的内容。每种方法都有其优缺点。可以使用静态成员、继承或将类A传递给类B作为参数。这取决于你需要做什么。我正在创建微型MVC框架Class_A'代表“视图”,Class_B'代表“控制器”。我使用静态成员来做这件事,但似乎几乎所有其他MVC框架都使用“依赖注入”。我想知道什么对我的情况更好。顺便说一句,很抱歉,这要看你到底想完成什么。每种方法都有其优缺点。可以使用静态成员、继承或将类A传递给类B作为参数。这取决于你需要做什么。我正在创建微型MVC框架Class_A'代表“视图”,Class_B'代表“控制器”。我使用静态成员来做这件事,但似乎几乎所有其他MVC框架都使用“依赖注入”。我想知道什么对我的情况更好。顺便说一句,很抱歉双重邮寄。我也很高兴见到你,戈登。我以前没有参加过非正式会议,所以我不确定会发生什么。。。但是,我希望向一些人介绍在PHP中使用“真正的”Excel文件的好处:)我首先期待的是乐趣和社交。会议的时间范围通常太小,无论如何都无法获得一个主题的概述。很高兴认识这些人:)戈登,我也很高兴认识你。我以前没有参加过非正式会议,所以我不确定会发生什么。。。但是,我希望向一些人介绍在PHP中使用“真正的”Excel文件的好处:)我首先期待的是乐趣和社交。会议的时间范围通常太小,无论如何都无法获得一个主题的概述。这是一次很好的会面:)