2016-01-20 2 views
0

Вызов функции getModule внутри функции init() в классе Module приводит к бесконечному циклу. Это происходит потому, что само по себе вызывает getModule Init()вызов getModule внутри init приводит к бесконечному циклу

Версия: Yii 1.1.14

Это дизайн, что каждый вызов getModule() приводит к призванию Init()?

Он имеет некоторые из этих побочных эффектов, как описано выше

ответ

1

Да, если вы читаете http://www.yiiframework.com/doc/api/1.1/CModule#getModule-detail вы увидите, что на каждом getModule() вызова новый экземпляр загружается.

Но я думаю, что бесконечный цикл возникает только при вызове того же модуля в функции init. Вам никогда не придется этого делать, потому что $this будет содержать текущий модуль в начале класса модуля.

+0

но может быть круговая зависимость между модулем А и модулем B, и поэтому модуль A вызывает getModule (B) в A :: init(), а модуль B вызывает getModule (A) в B :: init() – fortm

+0

Очень верно. Просто нужно быть осторожным, как вы делаете свои звонки, я думаю;) – jagsler

Смежные вопросы