Framework

Обсуждаем, как правильно строить приложения
Ответить
Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Framework

Сообщение Auramel » 2018.07.21, 15:08

Всем привет! Насмотрелся роликов Дмитрия Елисеева по своему микро-фрейму. Короче, попробовал сделать на свой "вкус". Вроде, что-то даже получилось. Пока боевого применения не было. Тут недавно еще zend решили depricate SapiEmitter в zend-diactoros... Короче, ребят, можете мое говнецо глянуть и сказать, что можно исправить, что можно переделать (ну советы типа - "удаляй все нахрен" не надо плиз).

Оказывается, собирать из библ очень интересно ) :)

вот ссылка https://bitbucket.org/Auramel/framework/src

UPD я не совсем понял смысл нового пакета https://docs.zendframework.com/zend-httphandlerrunner/. Зачем они вынесли это отдельно?
Глянул доку, даже смог с первого раза сделать рабочий пример. Только не понял как это совмещать с Pipeline. Там 1-ый аргумент - наш handler. А он в Pipeline как-бы... Доставать что-ли оттуда?

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

Re: Framework

Сообщение zelenin » 2018.07.22, 03:19

Auramel писал(а):
2018.07.21, 15:08
UPD я не совсем понял смысл нового пакета https://docs.zendframework.com/zend-httphandlerrunner/. Зачем они вынесли это отдельно?
потому что diactoros - это реализация psr7. А emitter в psr7 не описан.

Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Framework

Сообщение Auramel » 2018.07.22, 21:48

zelenin писал(а):
2018.07.22, 03:19
Auramel писал(а):
2018.07.21, 15:08
UPD я не совсем понял смысл нового пакета https://docs.zendframework.com/zend-httphandlerrunner/. Зачем они вынесли это отдельно?
потому что diactoros - это реализация psr7. А emitter в psr7 не описан.
спасибо

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

Re: Framework

Сообщение zelenin » 2018.07.23, 00:18

https://bitbucket.org/Auramel/framework/src

что-то странное. все без di. все через мидлвари зачем-то. нерабочий кэш роутов. Хэлперы, в составе которых Application.
Экшны - это хэндлеры реквестов, не мидлвари.

Я бы посоветовал развернуть и проанализировать вот это https://github.com/zendframework/zend-e ... e-skeleton

Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Framework

Сообщение Auramel » 2018.07.23, 08:01

zelenin писал(а):
2018.07.23, 00:18
https://bitbucket.org/Auramel/framework/src

что-то странное. все без di. все через мидлвари зачем-то. нерабочий кэш роутов. Хэлперы, в составе которых Application.
Экшны - это хэндлеры реквестов, не мидлвари.

Я бы посоветовал развернуть и проанализировать вот это https://github.com/zendframework/zend-e ... e-skeleton
Так я и делал без DI. Надо будет - можно реализовать фасады или подключить пакет типа PHP-DI.
Насчет мидлов - ну, как объяснить-то... На pipeline смотрел, чтобы все шло последовательно. В кач-ве handler сам pipeline выступает в итоге. Разворачивал скелетон expressive. Не очень понравилось.
Где у вас роуты не сработали? У меня на 2 пк все четенько отработало.

Application в хелперах, потому что была идея, что все это дерьмо можно будет переделать под себя, используя свою реализацию, надо ток интерфейсы задать было, а я это забыл совсем.

Понимаю, что все мы привыкли ко многим вещам во фреймворках. Я пытался сделать что-то типа "минималка", чтобы остальное самому можно было докрутить - прикрутить - переделать

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

Re: Framework

Сообщение zelenin » 2018.07.23, 10:59

Auramel писал(а):
2018.07.23, 08:01
Насчет мидлов - ну, как объяснить-то...
так что объяснять-то? мидлварь нужна для промежуточной обработки реквеста. А вы ее юзаете просто как фабрику.
https://bitbucket.org/Auramel/framework ... ew-default
https://bitbucket.org/Auramel/framework ... ew-default
Auramel писал(а):
2018.07.23, 08:01
Разворачивал скелетон expressive. Не очень понравилось.
это не вопрос нравится не нравится. Это пример того как изнутри должно выглядеть psr-7 приложение.
Auramel писал(а):
2018.07.23, 08:01
Где у вас роуты не сработали? У меня на 2 пк все четенько отработало.
https://bitbucket.org/Auramel/framework ... per.php-60
кэш бессмысленный, если роуты все равно пересчитываются
Auramel писал(а):
2018.07.23, 08:01
Application в хелперах, потому что была идея, что все это дерьмо можно будет переделать под себя, используя свою реализацию, надо ток интерфейсы задать было, а я это забыл совсем.
это не объясняет почему это хелпер.
Auramel писал(а):
2018.07.23, 08:01
Понимаю, что все мы привыкли ко многим вещам во фреймворках. Я пытался сделать что-то типа "минималка", чтобы остальное самому можно было докрутить - прикрутить - переделать
связи не вижу. Я ничего не говорил про то, что надо намертво приваривать. Указываю, что в кажой части приложения все сделано без понимания ее роли в psr-7.

Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Framework

Сообщение Auramel » 2018.07.23, 12:26

zelenin писал(а):
2018.07.23, 10:59
Auramel писал(а):
2018.07.23, 08:01
Насчет мидлов - ну, как объяснить-то...
так что объяснять-то? мидлварь нужна для промежуточной обработки реквеста. А вы ее юзаете просто как фабрику.
https://bitbucket.org/Auramel/framework ... ew-default
https://bitbucket.org/Auramel/framework ... ew-default
Auramel писал(а):
2018.07.23, 08:01
Разворачивал скелетон expressive. Не очень понравилось.
это не вопрос нравится не нравится. Это пример того как изнутри должно выглядеть psr-7 приложение.
Auramel писал(а):
2018.07.23, 08:01
Где у вас роуты не сработали? У меня на 2 пк все четенько отработало.
https://bitbucket.org/Auramel/framework ... per.php-60
кэш бессмысленный, если роуты все равно пересчитываются
Auramel писал(а):
2018.07.23, 08:01
Application в хелперах, потому что была идея, что все это дерьмо можно будет переделать под себя, используя свою реализацию, надо ток интерфейсы задать было, а я это забыл совсем.
это не объясняет почему это хелпер.
Auramel писал(а):
2018.07.23, 08:01
Понимаю, что все мы привыкли ко многим вещам во фреймворках. Я пытался сделать что-то типа "минималка", чтобы остальное самому можно было докрутить - прикрутить - переделать
связи не вижу. Я ничего не говорил про то, что надо намертво приваривать. Указываю, что в кажой части приложения все сделано без понимания ее роли в psr-7.
Читаю Вас и понимаю, что все говно. Скорее всего, Вы правы (все люди могут ошибаться). Ладно, можно закрыть весь сабж. Удалю репо...

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

Re: Framework

Сообщение zelenin » 2018.07.23, 12:43

Auramel писал(а):
2018.07.23, 12:26
zelenin писал(а):
2018.07.23, 10:59
Auramel писал(а):
2018.07.23, 08:01
Насчет мидлов - ну, как объяснить-то...
так что объяснять-то? мидлварь нужна для промежуточной обработки реквеста. А вы ее юзаете просто как фабрику.
https://bitbucket.org/Auramel/framework ... ew-default
https://bitbucket.org/Auramel/framework ... ew-default
Auramel писал(а):
2018.07.23, 08:01
Разворачивал скелетон expressive. Не очень понравилось.
это не вопрос нравится не нравится. Это пример того как изнутри должно выглядеть psr-7 приложение.
Auramel писал(а):
2018.07.23, 08:01
Где у вас роуты не сработали? У меня на 2 пк все четенько отработало.
https://bitbucket.org/Auramel/framework ... per.php-60
кэш бессмысленный, если роуты все равно пересчитываются
Auramel писал(а):
2018.07.23, 08:01
Application в хелперах, потому что была идея, что все это дерьмо можно будет переделать под себя, используя свою реализацию, надо ток интерфейсы задать было, а я это забыл совсем.
это не объясняет почему это хелпер.
Auramel писал(а):
2018.07.23, 08:01
Понимаю, что все мы привыкли ко многим вещам во фреймворках. Я пытался сделать что-то типа "минималка", чтобы остальное самому можно было докрутить - прикрутить - переделать
связи не вижу. Я ничего не говорил про то, что надо намертво приваривать. Указываю, что в кажой части приложения все сделано без понимания ее роли в psr-7.
Читаю Вас и понимаю, что все говно. Скорее всего, Вы правы (все люди могут ошибаться). Ладно, можно закрыть весь сабж. Удалю репо...
нет, надо переосмыслить, разобраться, задать вопросы.
Еще раз, разберитесь в ZE skeleton для понимания какая часть для чего и как используется.

в psr-15 есть понятия Request Handler и Middleware. Первое обрабатывает запрос, второе промежуточно его модифицирует.
Таким образом сам pipe у нас будет Request Handler, внутри которого запрос обрабатывается через middlewares, чтобы в конце придти к итоговому Request Handler.
Как это работает в ZE:
- RouteMiddleware (определяет роут и экшн им обрабатываемый)
- ... произвольные мидлвари ...
- в самом конце, чтобы отработал весь пайп до экшнов, DispatcherMiddleware (передает реквест в определенный ранее экшн). Если роут и экшн найдены, то пайп заканчивается
- если не найдены, передаем реквест в NotFoundHandler

Все остальное - твиг, логгеры итд - к процессу обработки реквеста не относятся. Они создаются в другом месте.

Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Framework

Сообщение Auramel » 2018.07.23, 13:34

zelenin писал(а):
2018.07.23, 12:43
Auramel писал(а):
2018.07.23, 12:26
zelenin писал(а):
2018.07.23, 10:59

так что объяснять-то? мидлварь нужна для промежуточной обработки реквеста. А вы ее юзаете просто как фабрику.
https://bitbucket.org/Auramel/framework ... ew-default
https://bitbucket.org/Auramel/framework ... ew-default

это не вопрос нравится не нравится. Это пример того как изнутри должно выглядеть psr-7 приложение.


https://bitbucket.org/Auramel/framework ... per.php-60
кэш бессмысленный, если роуты все равно пересчитываются

это не объясняет почему это хелпер.

связи не вижу. Я ничего не говорил про то, что надо намертво приваривать. Указываю, что в кажой части приложения все сделано без понимания ее роли в psr-7.
Читаю Вас и понимаю, что все говно. Скорее всего, Вы правы (все люди могут ошибаться). Ладно, можно закрыть весь сабж. Удалю репо...
нет, надо переосмыслить, разобраться, задать вопросы.
Еще раз, разберитесь в ZE skeleton для понимания какая часть для чего и как используется.

в psr-15 есть понятия Request Handler и Middleware. Первое обрабатывает запрос, второе промежуточно его модифицирует.
Таким образом сам pipe у нас будет Request Handler, внутри которого запрос обрабатывается через middlewares, чтобы в конце придти к итоговому Request Handler.
Как это работает в ZE:
- RouteMiddleware (определяет роут и экшн им обрабатываемый)
- ... произвольные мидлвари ...
- в самом конце, чтобы отработал весь пайп до экшнов, DispatcherMiddleware (передает реквест в определенный ранее экшн). Если роут и экшн найдены, то пайп заканчивается
- если не найдены, передаем реквест в NotFoundHandler

Все остальное - твиг, логгеры итд - к процессу обработки реквеста не относятся. Они создаются в другом месте.
Насчет твигов, логов и прочего. У меня зародилась идея, что это должно быть в "модификации запроса". Типа "надо обработать вот этот вот роут с такими вот плюхами". Ну, говно идея, короче.

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

Re: Framework

Сообщение zelenin » 2018.07.23, 13:38

Auramel писал(а):
2018.07.23, 13:34
Насчет твигов, логов и прочего. У меня зародилась идея, что это должно быть в "модификации запроса". Типа "надо обработать вот этот вот роут с такими вот плюхами". Ну, говно идея, короче.
но вы не в роуте это создаете, а для всего пайпа.
Логично это создать в другом месте, а в экшн передать через конструктор.

Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Framework

Сообщение Auramel » 2018.07.23, 13:43

zelenin писал(а):
2018.07.23, 13:38
Auramel писал(а):
2018.07.23, 13:34
Насчет твигов, логов и прочего. У меня зародилась идея, что это должно быть в "модификации запроса". Типа "надо обработать вот этот вот роут с такими вот плюхами". Ну, говно идея, короче.
но вы не в роуте это создаете, а для всего пайпа.
Логично это создать в другом месте, а в экшн передать через конструктор.
так там же для каждого роута свой пайп был. Мне показалось, это логично

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

Re: Framework

Сообщение zelenin » 2018.07.23, 13:50

Auramel писал(а):
2018.07.23, 13:43
zelenin писал(а):
2018.07.23, 13:38
Auramel писал(а):
2018.07.23, 13:34
Насчет твигов, логов и прочего. У меня зародилась идея, что это должно быть в "модификации запроса". Типа "надо обработать вот этот вот роут с такими вот плюхами". Ну, говно идея, короче.
но вы не в роуте это создаете, а для всего пайпа.
Логично это создать в другом месте, а в экшн передать через конструктор.
так там же для каждого роута свой пайп был. Мне показалось, это логично
логичнее иметь 1 пайп и 10 экшнов, чем 10 пайпов и 10 экшнов.

Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Framework

Сообщение Auramel » 2018.07.23, 13:51

zelenin писал(а):
2018.07.23, 13:50
Auramel писал(а):
2018.07.23, 13:43
zelenin писал(а):
2018.07.23, 13:38
но вы не в роуте это создаете, а для всего пайпа.
Логично это создать в другом месте, а в экшн передать через конструктор.
так там же для каждого роута свой пайп был. Мне показалось, это логично
логичнее иметь 1 пайп и 10 экшнов, чем 10 пайпов и 10 экшнов.
не подумал об этом. Думал сделать типа SRP. Аля для каждого экшена свой конкретный пайп.

Ответить