
Combot
12.08.2018
14:10:59
Dmitry Malinov (0) увеличил репутацию Trekov (1)

Bohdan
12.08.2018
14:33:40
всегда бы так

Dmitry
12.08.2018
15:48:03
Еще вопрос в плане namespace'ов.
Мы можем обратиться к какому-то статическому методу/констате/статической переменной прописав namespace, допустим:
\app\models\SomeClass::SOME_CONTANT
А можно использовать use app\models\SomeClass, и уже получать напрямую через SomeClass::SOME_CONTANT не прописывая классов.
Какой подход где лучше применять?
Допустим, я на странице хочу обратиться к двум константам:
\app\models\SomeClass::SOME_KEY
\app\models\SomeClass::SOME_DIGIT
При таком подходе много места занимает немспейс класса, и лучше use прописать, так?

Google

Chupa
12.08.2018
15:51:30
use лучше всегда использовать
но не всегда возможно

Bohdan
12.08.2018
15:55:41
многие любят использовать частичный use

Dmitry
12.08.2018
15:56:24

Bohdan
12.08.2018
15:56:56
use \app\models

F01134H
12.08.2018
15:57:40

Dmitry
12.08.2018
15:58:19
но не всегда возможно
Спасибо. Невозможно из-за вероятности одинаковых наименований класса? К примеру:
app\models\User
app\components\User

F01134H
12.08.2018
15:58:25
когда импортируешь 2 одинаковых класса важно задать алиас (use Some as ConcreteSome)

Dmitry
12.08.2018
15:59:06

F01134H
12.08.2018
15:59:31
Не думаю что есть большая разница

Bohdan
12.08.2018
16:01:02
ты ведь на пхп пишешь, небось даже не демонов

Maksim
12.08.2018
16:03:50
Демонов проще писать)

Google

Dmitry
12.08.2018
16:07:13
И еще хотел бы по MVC уточнить:
Допустим, у нас есть меню, в котором мы желаем отображать число, например, активных тикетов. И есть модель, которая наследует ActiveRecord.
Является ли плохой практикой формирования запроса AR прямо во view?
<a href='#'>Тикеты [<?= Ticket::find()->where(['status' => Ticket::STATUS_NEW])->count()?>]</a>
Или для этого лучше создавать какого-то рода виджет?

Гена
12.08.2018
16:17:17

Dmitry
12.08.2018
16:19:29

Sergey
12.08.2018
16:25:39
опять этот yii
и да у тебя может быть не только "вьюшки", "модельки AR" и "контроллеры".
а вообще в идеале тебе в шаблон уже готовые данные должны приходить, без необходимости что-то там догружать.


Гена
12.08.2018
16:34:29
И еще хотел бы по MVC уточнить:
Допустим, у нас есть меню, в котором мы желаем отображать число, например, активных тикетов. И есть модель, которая наследует ActiveRecord.
Является ли плохой практикой формирования запроса AR прямо во view?
<a href='#'>Тикеты [<?= Ticket::find()->where(['status' => Ticket::STATUS_NEW])->count()?>]</a>
Или для этого лучше создавать какого-то рода виджет?
При таком подходе сложно отладку делать, для изменения результата придется лазить и править вьюху, я уже не говорю о том, что вьюха должна быть независима и их можно менять, допустим отдавать json массив через вьюху или xml, соответственно данные из контроллера должны быть всегда готовы и передаваться в слой view
У меня плохо с терминологией и теоретическими знаниями архитектуры, я практик

Dmitry
12.08.2018
17:07:58
Спасибо за ответы, буду разбираться с грамотной реализацией!

Sergey
12.08.2018
17:48:09

Гена
12.08.2018
17:49:00

Sergey
12.08.2018
17:49:27
ну мол ты можешь в шаблоне объявить что "вот тут должна отображаться менюшка" или "топ 10 продуктов", можешь как-то параметры задать а дальше у виджета своя вьюшка, свой контроллер. Детишки называют это HMVC)

Гена
12.08.2018
17:51:52
я бы генерацию меню сделал классом, а там можно его куда угодно отдавать , допустим будет он итератором, норм вроде

Sergey
12.08.2018
17:53:01

Гена
12.08.2018
17:53:16
Евентом можно сделать

Sergey
12.08.2018
17:53:39
что сделать?) о чем ты?)

Google

Sergey
12.08.2018
17:54:20

Гена
12.08.2018
17:54:40
Событие, которое дёргает диспетчер, на который подписываются

Sergey
12.08.2018
17:54:50
какие ивенты, кто их будет кидать? зачем?

Гена
12.08.2018
17:55:50
минутку... пишу код, объяснить не могу словами

Sergey
12.08.2018
17:57:32
да не надо изобретать велосипеды)
http://symfony.com/doc/current/templating/embedding_controllers.html
вот пример
как это грамотно делается

Dmitry
12.08.2018
18:04:49
Ну я использовал терминологию Yii2. В Yii2 виджеты многоразовые строительные блоки, которые используются в представлениях. К примеру, для генерации Navbar'а. О минусах фреймворка знаю, но раз уж взялся, тогда хочу довести до конца изучение, чтобы не бросать на полудороге и мигрировать туда-сюда. В дальнейшем Lavarel планирую освоить.

Alexander
12.08.2018
19:28:36

Alexander
12.08.2018
19:28:44
как мне мапу то описать, чтобы симфония не ругалась?

Александр
12.08.2018
19:29:55
А так можно?

Bohdan
12.08.2018
19:29:58
я что-то не уверен

Alexander
12.08.2018
19:30:01
в идеале получить бы либо мапу вида key=>Object, либо хотя бы key=>className
https://symfony.com/doc/current/service_container/parameters.html#array-parameters вот тут что-то похожее

Александр
12.08.2018
19:30:18
Вот я тоже думаю что так нельзя
Так это параметры

Google

Alexander
12.08.2018
19:31:22
типа отдельно нужно описать параметры и потом в аргументах отсылку к ним приделать?

Bohdan
12.08.2018
19:31:30
возможно, попробуй так
даже в том же файле, просто в секции parameters

Alexander
12.08.2018
19:31:56
понял, сейчас попробую

Александр
12.08.2018
19:32:05
Все равно не выйдет я думаю

Bohdan
12.08.2018
19:32:23
ну судя по доке - может получиться

Александр
12.08.2018
19:32:50
Ну посмотрим что выйдет у него, но ставлю что нет)

Artem
12.08.2018
19:34:08
вообще лучше бы ты скинул конкретную ошибку, а то есть мнение, что ты просто конфиг неправильно написал, если там аргументы - там вроде массив надо, если хочешь конкретный указать - надо знак бакса

Александр
12.08.2018
19:34:11
Вообще если цель держать в сервисе заполненный массив других сервисов можно через compiler pass разрулить

Admin
ERROR: S client not available

Александр
12.08.2018
19:34:35

Alexander
12.08.2018
19:35:04
если удастся передать массив из сервисов, будет еще лучше

Александр
12.08.2018
19:35:26
А, массив из строк тогда не проблема, как параметр объяви
Должно сработать такое
Если массив из сервисов хочешь попробуй через compiler pass

Artem
12.08.2018
19:37:00
ты же всё равно в массиве будешь по ключу искать
короче оберни массив в класс =)

Alexander
12.08.2018
19:40:26
теперь другая проблема: для DefaultHandlerFactory объявил интерфейс ContainerAware, приделал трейт ContainerAwareTrait, но контейнер туда не подсунулся

Google

Alexander
12.08.2018
19:40:36
а это с чем может быть связано?

Александр
12.08.2018
19:41:15

Alexander
12.08.2018
19:41:47
а потом перестало О_о

Александр
12.08.2018
19:42:10
А вообще если я правильно понял что ты хочешь. То тебе можно выдать тег твоим сервисам и через compiler pass их собирать и уже отдавать в методе resolve
Вот тут есть примерчик https://symfony.com/doc/current/service_container/tags.html

Bohdan
12.08.2018
19:50:32
ну вариант с явным массивом мог бы быть даже интереснее в некоторых ситуациях
но да, компайлер пассом такое разруливается на ура

Alexander
12.08.2018
19:54:43
ну хотелось бы таки получить массив объектов, чтобы не дергать конейнер и не объявлять дефиниции как паблик

Bohdan
12.08.2018
19:58:21
ну с компайл пассом получится слишком чисто - аж магически)

Alexander
12.08.2018
20:01:30
ну магия это тоже грязь какая-то, магии я в Yii наелся)

Sergey
12.08.2018
20:07:08
только если хочется сервис то там должна быть собачка
ну и я бы это дело в локатор все ж завернул)
хотя... почему бы и нет

Shmaltorhbooks
12.08.2018
20:10:43
Чуваку надо просто массив сервисов в конструктор передать)
На кой ляд ему локаторы, компайл-пассы и классы над массивами?

Alexander
12.08.2018
20:13:15
вот как-то с PHP-DI таких вопросов не возникало