Я до сих пор не могу сказать разницу между контейнером, контроллером или фабрикой. Например, код ниже, должен ли он рассматриваться как контейнер, контроллер или фабрика?
Как должно быть, если это контейнер в этом случае?
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();
}
}
}
}
Это контейнер, потому что это объект, который содержит другой объект, к которому осуществляется доступ, то есть, в данном случае, Logger.
Контроллер — это термин, который обычно относится к С MVC
и это то, что контролирует модель и вид
В то время как фабричный метод ссылается на подпрограммы, которые возвращают правильную специализацию интерфейса / абстрактного класса
Обратите внимание, что эти три термина относятся к очень разным вещам
Других решений пока нет …