PHP : Best way to call an object method from another object ?

标签 php oop

我正在寻找从另一个类调用类方法的最佳方法,而不必使用 Global 来获取类实例,因为我现在明白“全局是邪恶的”!

下面是一些代码来解释它:

class Assets{
 public $assets = array();
 public function add($asset){
  $this->assets[] = $asset;
 }
}

现在我想在这里调用 Assets/call 方法 ..

$assets = new Assets;
class Form{
 public function __construct(){
  global $assets;
  $assets->add('Form');
 }
}

在这种情况下使用 Global 是不是很糟糕?如果是这样,还有什么其他方式被认为是最好的?

PS:我只需要使用该类的一个实例;意味着我不想在第二个类中创建一个新实例。

最佳答案

如果您只想拥有 1 个 Assets 实例,则需要使用某种形式的依赖注入(inject)。

在这种情况下最明显的是通过构造函数传递它:

class Form{
 public function __construct(Assets $assets){
  $assets->add('Form');
 }
}

使用全局变量确实是个坏主意。

关于PHP : Best way to call an object method from another object ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16797283/

相关文章:

vector<Object *> use 和 new Object() 的 C++ 编程问题

php - 将 session 存储在数据库中,这是一个好主意吗?

javascript - 如何在 PHP 中使用自定义购物车

java - 返回数据结构以显示信息

c++ - 在派生类中调用多个虚函数

oop - DDD 书,埃里克·埃文斯 : What is meant by "The FACTORY should be abstracted to the type desired rather than the concrete class(es) created."?

php - 在 PHP 中拆分与爆炸

php - 更新后台数据库和网站

php - 为什么 Codeception 的 PhpBrowser 不遵循 "Reload" header ?

php - 为什么公共(public)函数可以通过静态调用来访问 - PHP?