[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PDIC - Property Dependency Injection Container
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
chee
Цитата (twin @ 12.01.2021 - 01:38)
Ниче не понял...

я так понимаю, это у тебя постоянно в этой теме. Ты просто ничего не понимаешь, а споришь. Я же явно написал, ладно перефразирую, все что будет запрошено через метод get будет возвращать новый экземпляр. То есть у меня раньше был метод create, сейчас create это get. Внутри же метод get не будет использоваться, он для публичного интерфейса, для внутреннего использования в контейнере используется fetch (с поведением старого get).

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Все, понял. Ну то же что я говорил, только другим, более сложным методом)))) Ну хотя бы так, слава яйцам. А то я спать не могу, все переживаю. laugh.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Нет, опять не понял. Тоесть методом get сейчас нельзя получить расшареный сервис? А как же PSR?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
twin, в законно, вырезка из psr-11
Цитата
get takes one mandatory parameter: an entry identifier, which MUST be a string. get can return anything (a mixed value), or throw a NotFoundExceptionInterface if the identifier is not known to the container. Two successive calls to get with the same identifier SHOULD return the same value. However, depending on the implementor design and/or user configuration, different values might be returned, so user SHOULD NOT rely on getting the same value on 2 successive calls.


Вообще и старый вариант полностью соответствовал psr-11, посмотрим как этот себя покажет, если все ок, то в контейнер перенесу

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Ну тоесть ты отрекся от расшаренных сервисов получается. На кой там вообще звездочка тогда?

Или ты усложнил дизайн, с чем не хотел соглашаться, и теперь у тебя два метода на выборку?

А почему не сделать как я советовал. Тогда все было бы и законно и просто. Не нужен новый метод в API/

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
Вообще если так подумать это поведение контейнера действительно очень хорошо ложится на мою концепцию. Оно поощряет использование карты зависимостей и демотивирует прокидывать контейнер в классы чтобы получать shared зависимости. Единственная проблема, поддержку сервис локатора в таком случае придется пересмотреть или вообще выкинуть.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
twin, ты опять ничего не понял, все осталось как прежде, вообще ничего не поменялось, кроме поведения публичного api метода, внутрянка также работает, звёздочки также надо объявлять что бы по карте создалась not shared сущность. То есть если вернуться к твоему примеру со складом, магазином и заказом, поменялось то что у тебя будут всегда новые сущности магазина и склада, но одна сущность заказа пока ты не поставишь звездочку в карте зависимостей.


$container->get('Market')->order->test = 1;
$container->get('Storage')->order->test; // 1
$container->get('Market') != $container->get('Market'); // true


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Ну я правильно понял. Теперь нельзя расшарить сервис. Если я положу в контейнер сервис БД, буду иметь новый коннект каждый раз. Ну красиво, че уж там.

Позволь спросить тогда. А чем это отличается от билдера? Метаданными?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
И я чето не понял, а куда теперь звездочки ставить?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Ты перевернул свою же концепцию с ног на голову. Раньше все сервисы были расшаренными. Чтобы сделать локальный, надо было поставить звездочку. Теперь наоборот. Ну это еще полбеды, я кстати приверженец этой политики.

Но теперь и звездочку поставить нельзя на сервис... Это вообще круть.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Ба! Да ее вообще никуда теперь нельзя поставить biggrin.gif
Ну наконец то избавились от суррогата. Так держать! Так победим! biggrin.gif biggrin.gif biggrin.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
twin, вот пример

$container = new \ExampleCMS\Container([
Market::class => [
'order' => Order::class, // shared
],
Storage::class => [
'order' => Order::class, // shared
]
]);


$container->get('Market')->order->test = 1;
var_dump($container->get('Storage')->order->test); // 1

$container2 = new \ExampleCMS\Container([
Market::class => [
'order' => '*' . Order::class, // not shared
],
Storage::class => [
'order' => '*' . Order::class, // not shared
]
]);


$container2->get('Market')->order->test = 1;
var_dump($container2->get('Storage')->order->test); // undefined


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
А сам контейнер то где взять?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
twin, внедрить через свойства как shared объект


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Это все еще актуально https://pastebin.com/CMPAsmqL, тут видно, что внедряю контейнер в фабрики.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.