2015-06-27 2 views
0

У меня есть функция loadModule(); в классе core, но для загрузки модулей мне нужно определить переменные в конструкции, и многим из них требуется ядро. Я бы просто использовал loadModule("someModule", $settings, $dbc, $core, $etc...); или loadModule("someModule", $settings, $dbc, $this, $etc...);, так как эта функция находится в основном классе, который определяется $ core? Я запутался прямо сейчас, и помощь будет оценена по достоинству. Благодаря

EDIT:

Использование по назначению будет выглядеть примерно так $this->core->loadModule("initialLoad, $settings, $version, $dbc, $parser, $layout);

Конструкция модуля будет выглядеть

public function __construct($settings, $version, $dbc, $layout, $core, $parser){ 
    $this->settings = $settings; 
    $this->version = $version; 
    $this->dbc = $dbc; 
    $this->layout = $layout; 
    $this->core = $core; 
    $this->parser = $parser; 

} 
+0

Можете ли вы привести краткий пример предполагаемого использования? – Rasclatt

+1

Одна вещь, которая звучит так, как будто вы можете воспользоваться преимуществами констант класса – Rasclatt

+0

@Rasclatt Что это? Я никогда не слышал об этом раньше. Изменить: это похоже на core :: function(); – Core

ответ

0

Я хотел бы посмотреть на инъекции зависимостей. Возможно, используйте что-то вроде pimple.

Попросите свой контейнер инициализировать все ваши модули. Если вам нужно перейти на более продвинутое использование, вы, вероятно, могли бы проксировать службы, чтобы они ленились при первом использовании.

Тогда вы могли бы, вероятно, ввести ядро ​​в классы и использовать загруженные модули, как вам нравится.

+0

Итак, этот (и комментарий Rasclatt's) привел меня к идее; с загрузчиком модуля в классе инициации страницы. Технически это будет иметь больше смысла, потому что оно мало используется и устранит эту проблему – Core