Роман Мирр, ниже вам верно ответили - стоит создавать канал out снаружи и передавать его в labelsEmitter в качестве второго параметра. И тот же канал передавать в labelsReceiver
Вопрос действительно странный. Вернее, странно то, что вы хотите сделать. Могли бы вы немного ввести нас в контекст? Потому что я могу назвать ни одной штатной ситуации, когда бы в симфони потребовалось иметь доступ к БД в статическом методе.
Дмитрий, да что ж вы прицепились к этому зенду?) Я же не говорю не использовать его. Я говорю о том, что лично я бы посоветовал симфони ввиду более широкой поддержки сообществом
Дмитрий, когда пишешь что-то свое - гораздо меньше смотришь на чужой код и меньше видишь хороших и плохих примеров. Если же собирать из компонентов ПСР-овских, то как минимум поймешь, для чего нужны интерфейсы, что такое полиморфизм и внедрение зависимостей. Если брать готовый фрейм и писать на нем (при условии, что это не ларавель/йии, имхо) - то рано или поздно все равно захочется/вынужден будешь посмотреть, как это реализовано внутри. И, что важно, начнешь вникать, ПОЧЕМУ сделано так, а не по-другому. А в компонентах симфони, например, чаще всего используются лучшие практики и там есть чему поучиться.
Писать свой велосипед стоит для того, чтобы понять, как работает MVC - тут согласен. Но автор вопроса этот этап уже прошел.
Дмитрий, я не говорил, что зенд плох. Симфони просто взял лучшее от зенда и довел до ума. Да, есть zend expressive, но я думаю, что с точки зрения сообщества лучше развит симфони
П.С. В качестве альтернативы написанию своего фрейма я бы посоветовал взять ядро Slim'а (не сам Slim, а только роутер от него) и собрать что-то свое из PSR-компонентов (контейнер, орм прикрутить самостоятельно). Довольно интересный опыт, позволяет неплохо изучить принцип работы фреймворков изнутри и, что важно, работодатель при устройстве может это оценить.
Из ларавеля никаким подходам автор вопроса не научится, имхо. И паттернам тем более: разве что фасаду. Опять же все зависит от того, каким практикам следовать, но пока что я не видел проектов, написанных на ларавеле прямо качественно. Ларавель - это что-то вроде yii на максималках.
Я бы посоветовал Symfony, потому что он собирает в себе лучшие практики и практически заставляет писать более чистый код. Хотя, конечно, можно наворотить ерунды и на нем, если сильно постараться.
Вот мой личный пример конфигурации Security для API. В первую очередь смотрите в самый низ: там под ключом api указан firewall для моего приложения (вернее, той его части, роуты которой соответствуют указанному шаблону). Все, что необходимо сделать и указать в конфигах вам - это создать UserProvider'а (или взять готовый), который будет реализовывать UserProviderInterface и методы которого будут возвращать UserInterface.
Насчет анонимных запросов: тут принцип тот же, что и с сессиями. Есть два варианта обработки анонимных запросов:
первый - это создать firewall'ы для тех роутов, которые вы хотите сделать анонимными, как это сделано в том же конфиге, что я скинул (на мой взгляд, это не совсем правильно, т.к firewall'ы предназначены не совсем для этого)
точно так же, как и в случае с сессиями использовать роли, предоставляемые Security (то есть просто указывать IS_AUTHENTICATED_ANONYMOUSLY для тех роутов, для которых это необходимо). В этом случае если запрос не является анонимным, но пользователь не предоставил токен, будет отдан 401 статус. А если роль текущего пользователя не соответствует указанной в конфиге - то 403.
pro-dev, можно в теле ответа передавать bool-параметр. Например, у вас есть пост, и редактировать его может только автор. В таком случае просто к телу ответа добавьте поле isMine и в зависимости от него выводите кнопку. Как вариант