Я работаю с MVC уже несколько месяцев и храню все в своем объекте $registry. Когда я создаю новый класс, я обычно передаю только реестр, но мне приходится постоянно передавать $this->registry
при создании нового класса.
например
class something
{
public function __construct($registry)
{
$this->registry = registry;
$this->db = $registry->db;
$this->user = $registry->user; // ......
}
public function something()
{
$class = new something_class($this->registry);
$class->do();
}
}
class something_class
{
public function __construct($registry)
{
$this->registry = $registry;
}
public function do()
{
echo 'Doing something ....';
}
}
Мой вопрос в том, как я могу каким-то образом обработать передачу реестра в новый класс за кулисами (в данном случае при создании экземпляра something_class) внутри класса реестра? Я абсолютно убежден, что есть простой способ сделать это, но я нигде не могу найти ничего, связанного с тем, что я ищу.
Вот мой класс реестра:
<?php
class registry
{
protected $vars = array();
public function &__set($index, $value)
{
$this->vars[$index] = $value;
return $value;
}
public function &__get($index)
{
return $this->vars[$index];
}
}
Dependency injection container
, например: проект Symfony (на котором построено множество фреймворков) имеет хороший компонент внедрения зависимостей, который можно использовать сразу или, по крайней мере, хороший ресурс, когда дело доходит до того, как это реализовано: symfony.com/doc/current/components/dependency_injection .html - person Jite   schedule 31.08.2016