相关疑难解决方法(0)

访问DI容器

我正在开始一个新项目并建立基础来开展工作.一些问题已经上升,我可能会在这里问一些问题,希望我会找到一些答案.

第一步是处理对象的依赖关系.我已经决定使用依赖注入设计模式,我有点新,为应用程序处理所有这些.

实际编码时,我遇到了一个问题.如果一个类有多个依赖项,并且您希望通过构造函数传递多个依赖项(以便在实例化对象后无法更改它们).

如何在不传递依赖数组的情况下使用call_user_func_array(),eval()或Reflection?这就是我要找的:

<?php

class DI
{
    public function getClass($classname)
    {
        if(!$this->pool[$classname]) {
            # Load dependencies
            $deps = $this->loadDependencies($classname);

            # Here is where the magic should happen
            $instance = new $classname($dep1, $dep2, $dep3);

            # Add to pool
            $this->pool[$classname] = $instance;

            return $instance;
        } else {
                return $this->pool[$classname];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

同样,我想避免使用最昂贵的方法来调用该类.还有其他建议吗?

另外,如何在类中访问DI类,例如,在需要访问不同模型的控制器中?我应该静态地调用它还是将它传递给需要它的每个类?我不认为最后的想法是可行的.

感谢大家.

php dependency-injection

10
推荐指数
1
解决办法
1768
查看次数

标签 统计

dependency-injection ×1

php ×1