PHP依赖注入 - 容器,控制器或工厂之间的差异

时间:2014-11-13 17:24:07

标签: php dependency-injection containers factory

我仍然无法分辨容器,控制器或工厂之间的区别。例如,下面的代码应该被视为容器,控制器还是工厂?

在这种情况下,如果它是一个容器应该怎么样?

namespace ioc
{
    class LoggerContainer
    {
        use \Snippets;

        /*
         * Set props.
         */
        protected $Database;
        public $Logger;

        /**
         * Construct data.
         */ 
        public function __construct($Database) 
        {
            // Set DI.
            $this->Database = $Database;

            // Run private method.
            $this->getLogger();
        }

        /**
         * Set a new class (instantiate the class) as the return result.
         */
        private function getLogger()
        {
            $signature = AUTHENTICATED_USER_SIGNATURE;
            $this->Logger = new \core\model\Logger($this->Database);

            if($_REQUEST['url'] === 'backoffice')
            {
                return $this->Logger->setLogger($signature)->addCategory()->addSomething();
            }
            else
            {
                return $this->Logger->setLogger($signature)->removeSomething();
            }

        }
    }
}

1 个答案:

答案 0 :(得分:1)

  • 这是一个容器,因为它是一个保存另一个被访问对象的对象,在这种情况下是一个Logger。

  • 控制器是一个通常引用MVC的C的术语,它控制着模型和视图

  • 虽然工厂方法引用了返回接口/抽象类的正确特化的例程

请注意,这三个术语指的是非常不同的东西