在 class 中需要使用到别的 class 的 function ?

发布于 2022-09-11 20:44:31 字数 342 浏览 11 评论 0

我现在遇到一个问题是
假设现在有一个类

class A {
    public function a() {
    }
}
class B {
    public function b() {
    }
}

假设我在 b() 中需要使用到 A的 a()
这通常会是用什么方式做到呢?我看网上似乎有几种方式,不晓得哪个是好的
再来如果类得顺序会不会影响到使用?
如果反过来呢? a() 需要用 b() 时?


我現在的做法是在外面先 new 一個
在用 global 帶到 function 裡面用

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

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

发布评论

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

评论(4

↙温凉少女 2022-09-18 20:44:31

如果 B:A 类存在上下级关系就直接用 extend 进行 继承

如果 A 类会在多个地方用到,可以抽出来做成 Trait ,在需要使用时 use

如果以上两个条件都不满足。

  • 那就可以用直接在 B 的 构造方法 中实例化 A ,赋值给 B 的属性,然后调用。
  • 使用 依赖注入,即在 B 中 把实例化 A 的代码去掉,直接在外部实例化 B 时先实例化 A 然后把在外部实例化的 A 传给 B 的 构造方法,在 B 的构造方法中将传进来的 A 实例赋值给属性。
素染倾城色 2022-09-18 20:44:31

先加载你要用的类,include或者composer。
$obj = new A();
$obj->a();

反之同理。

情泪▽动烟 2022-09-18 20:44:31

最好的方式是用命名空间导入,防止类名重复。
自动载入->use->new namespace/A()

半世晨晓 2022-09-18 20:44:31

现在一般都用依赖注入,用容器进行类管理,反射来进行注入。可以参考下symfony。好处可以百度一下,很多。不过在设计的时候需要注意环形调用。

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