@prophp7

Страница 1256 из 1387
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
многие любят использовать частичный use
"частичный use" — это как? (google молчит)

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

F01134H
12.08.2018
15:57:40
Еще вопрос в плане namespace'ов. Мы можем обратиться к какому-то статическому методу/констате/статической переменной прописав namespace, допустим: \app\models\SomeClass::SOME_CONTANT А можно использовать use app\models\SomeClass, и уже получать напрямую через SomeClass::SOME_CONTANT не прописывая классов. Какой подход где лучше применять?
В одном случае ты импортируешь, во втором используешь по конкретному адресу. Когда импортируешь, важно что бы у тебя не было два класса с одинаковым именем, а так можно хоть десять одинаковых классов юзать (когда полностью прописываешь неймспейс)

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

use \app\models
Понял, спасибо.

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

Dmitry
12.08.2018
15:59:06
когда импортируешь 2 одинаковых класса важно задать алиас (use Some as ConcreteSome)
О, спасибо, понял теперь зачем эти алиасы ? А в плане памяти сильную роль играет импорт и обращение к конкретному адресу? Можно ли жертвовать чуть ей ради чистоты кода?

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> Или для этого лучше создавать какого-то рода виджет?

Dmitry
12.08.2018
16:19:29
Очень плохо, очень, за такое руки отрывают у нас, как у других не знаю)
Каков выход? Виджеты? Ну на примере того же Yii2(в нем также MVC, есть виджеты для HTML-блоков). Спасибо за ответ. Просто, хочу понять как правильно реализовать, по-сути тут даже в Controller не передается, потому что меню на всех страницах.

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:49:27
Виджет это по сути layout?
не. это как подзапрос в симфони, только в Yii nам свои кастыли для этого

ну мол ты можешь в шаблоне объявить что "вот тут должна отображаться менюшка" или "топ 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
Гена
12.08.2018
17:54:40
Событие, которое дёргает диспетчер, на который подписываются

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

Гена
12.08.2018
17:55:50
и html в этот класс бы положил?)
Нет во вьюху отдал бы, а там html код бы уже сформировался бы... Понял о чём ты))))

минутку... пишу код, объяснить не могу словами

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

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 таких вопросов не возникало

Страница 1256 из 1387