Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение fly2k » 2014.11.26, 19:28

Приветы!

...про модули и их бутстрап:

До этого смотрел как сделано у дргих, и делал отдельным файлом Bootstrap. Теперь открыл для себя что сам класс модуля (Module обычно) могет сам implements BootstrapInterface и вроде тогда зачем файлы плодить? Но я подозреваю что есть какие то подводные камни или я просто чего то не понимаю... Может есть какие то договоренности или где то может пригодится бутстрап-функция именно отдельно от класса модуля?

И еще, если делать внутри Module тогда вроде как и в composer.json extra:bootstrap прописывать не нада, верно?

Спасибо!
// Yii2Rulez!

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение zelenin » 2014.11.26, 19:49

fly2k писал(а):Приветы!

...про модули и их бутстрап:

До этого смотрел как сделано у дргих, и делал отдельным файлом Bootstrap. Теперь открыл для себя что сам класс модуля (Module обычно) могет сам implements BootstrapInterface и вроде тогда зачем файлы плодить? Но я подозреваю что есть какие то подводные камни или я просто чего то не понимаю... Может есть какие то договоренности или где то может пригодится бутстрап-функция именно отдельно от класса модуля?
я так понимаю, в случае модуля создастся объект модуля, а он будет жирнее чем отдельный класс.
fly2k писал(а): И еще, если делать внутри Module тогда вроде как и в composer.json extra:bootstrap прописывать не нада, верно?
почему? надо

fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Re: Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение fly2k » 2014.11.26, 20:36

zelenin писал(а): я так понимаю, в случае модуля создастся объект модуля, а он будет жирнее чем отдельный класс.
ну да... это то есть urlManager прописали, но если по нему не будет хитов, то экземпляз модуля так и не будет создан...
с другой стороны, насколько тяжелый сам класс модуля? он ведь контроллеры(если их куча) не будет грузить - там тоже всё лениво...
я к тому, что может отдельный Bootstrap оправдан только в том случае если в классе самого модуля полно кода. Но вообще то, нафик наверное, ибо легко могет быть ситуёвина где конструктор модуля могеть только после бутстрапа выполнен...
zelenin писал(а):
fly2k писал(а): И еще, если делать внутри Module тогда вроде как и в composer.json extra:bootstrap прописывать не нада, верно?
почему? надо
ну я до конца конечно не уверен :) но вроде вот
и если модуль implements BootstrapInterface, то вроде как должно работать... то есть в конфиге то приложения нада прописывать всё равно, но в composer.json - не... в этом смысле может быть удобно: хочешь - юзай отдельно классы, из расширения, хочешь - подключай модуль, а хочешь - пропиши в конфиге его(модуль) в bootstrap.

Но это в случае модуля. В случае асбстрактного расширения, где модуль не подразумевается, без этого наверное никак... Но блин меня смущает вот эта вот избыточность(в конфиге приложения вроде как логичнее бутстрап прописать?) и безвариантность(решение о бутстрапе в модуле как бэ hardcoded) описания extra:bootstrap в composer.json

По всему, наверное, сама суть отдельного класса с единственной функцией - оно да, но вот как бы избавиться от канители с composer.json и позволить принимать решение о бутстрапе(нада - не нада) всё таки на уровне приложения, а не расширения...
// Yii2Rulez!

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение zelenin » 2014.11.26, 23:53

fly2k писал(а):
zelenin писал(а): я так понимаю, в случае модуля создастся объект модуля, а он будет жирнее чем отдельный класс.
ну да... это то есть urlManager прописали, но если по нему не будет хитов, то экземпляз модуля так и не будет создан...
с другой стороны, насколько тяжелый сам класс модуля? он ведь контроллеры(если их куча) не будет грузить - там тоже всё лениво...
я к тому, что может отдельный Bootstrap оправдан только в том случае если в классе самого модуля полно кода. Но вообще то, нафик наверное, ибо легко могет быть ситуёвина где конструктор модуля могеть только после бутстрапа выполнен...
не совсем понял про хиты.
тем не менее зачем создавать объект того, чего не нужно?
fly2k писал(а):ну я до конца конечно не уверен :) но вроде вот
и если модуль implements BootstrapInterface, то вроде как должно работать... то есть в конфиге то приложения нада прописывать всё равно, но в composer.json - не... в этом смысле может быть удобно: хочешь - юзай отдельно классы, из расширения, хочешь - подключай модуль, а хочешь - пропиши в конфиге его(модуль) в bootstrap.
опять же не понял. у вас два выбора: либо вручную прописывать в бутстрап либо через композер, и композер сам пропишет в бутстрап.
причем оба способа взаимозаменяемы.
fly2k писал(а):Но это в случае модуля. В случае асбстрактного расширения, где модуль не подразумевается, без этого наверное никак... Но блин меня смущает вот эта вот избыточность(в конфиге приложения вроде как логичнее бутстрап прописать?) и безвариантность(решение о бутстрапе в модуле как бэ hardcoded) описания extra:bootstrap в composer.json

По всему, наверное, сама суть отдельного класса с единственной функцией - оно да, но вот как бы избавиться от канители с composer.json и позволить принимать решение о бутстрапе(нада - не нада) всё таки на уровне приложения, а не расширения...
вообще не смешивайте модули и бутстрапы. бутстрап относится к модулю как и к любому другому виду расширения.
Хардкодед - да. Но там необходимый для расширения функционал. Не нужен? Не ставь.

Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение VaNnOrus » 2014.11.27, 09:24

fly2k писал(а):в конфиге приложения вроде как логичнее бутстрап прописать?
А что Вам мешает это сделать? Не пишите в композер бутстрап, а напишите в конфиге.

fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Re: Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение fly2k » 2014.11.27, 17:16

Вот я и разбираюсь... Так то понимаю что в App::bootstrap можно вообще любой класс прописать и пофиг от какого он расширения и откуда вообще, главное чтобы implements BootstrapInterface...
Изначально вообще казалось что в composer.json обязательно прописывать bootstrap в любом случае... и плюсом в конфиге приложения... ну это каша пригорела :)

Хотелось бы, может, чтобы в App::bootstrap можно было писать имя расширения(модуля) вместо имени класса, но это капризы уже :)
// Yii2Rulez!

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение zelenin » 2014.11.27, 17:46

fly2k писал(а): Хотелось бы, может, чтобы в App::bootstrap можно было писать имя расширения(модуля) вместо имени класса, но это капризы уже :)
вы так и не поняли структуру. расширение/модуль/бутстрап не зависят друг от друга - их может быть несколько, или не быть вовсе, и непонятно что в таком случае писать.

fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Re: Module::bootstrap($app) vs Bootstrap::bootstrap($app)

Сообщение fly2k » 2014.11.28, 00:15

да вроде догоняю, хотя да - долгое время вообще бустрап считал частью расширения...

всем спасибо, тема для меня пока исчерпана... а то я было ринулся бутстрап в класс модуля переносить :)
// Yii2Rulez!

Ответить