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

发布于 2024-10-12 16:01:54 字数 328 浏览 2 评论 0原文

我有两节课。我们称它们为“Class_A”和“Class_B”。我想在“B 类”中使用“Class_A”属性和方法。这样……

$a = new Class_A;


class Class_B {

    function __construct() {

        $a->foo = 2;

        $a->magic();

    }

}

当然不行。处理它的最佳做法是什么?

  • “全球”关键字?
  • 将“Class_A”的属性和方法设为静态?
  • 另一种方式...?

I have two classes. Lets call them 'Class_A' and 'Class_B'. I want to use 'Class_A' properties and methods in 'Class B'. Like this...

$a = new Class_A;


class Class_B {

    function __construct() {

        $a->foo = 2;

        $a->magic();

    }

}

Of course, it do not work. What is the best practice to deal with it?

  • 'global' keyword?
  • Make properties and methods of 'Class_A' static?
  • Another way...?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

罗罗贝儿 2024-10-19 16:01:54

依赖注入

$a = new Class_A();

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

$b = new Class_B($a);

Dependency injection

$a = new Class_A();

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

$b = new Class_B($a);
那片花海 2024-10-19 16:01:54

如果您需要类 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(); 调用它们,

避免全局。如果Class_B 也是一个Class_B(例如香蕉是一种水果),那么继承可能会更好。

If you need an instance of class Class_A, then pass it to class Class_Bs constructor:

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

$a_instance = new Class_A();

$b = new Class_B($a_instance);

If class Class_A does not need to be instantiated in order to perform its tasks, define properties and methods as static instead and call them with Class_A::method();

Avoid globals. If Class_B is also a Class_B (e.g. a banana is a fruit), then you probably go better with inheritance.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文