[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PDIC - Property Dependency Injection Container
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
twin
Не, я про код. Не буду же я из твоей CMS вытаскивать

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

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

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

user posted image
chee
twin, сейчас сделаю новую ветку на гитхабе


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
https://github.com/cheevauva/PDIC/tree/pdic-poc тесты правдивы, документация врет

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

Как мне получить расшаренный Market? Звездочку туда теперь нельзя ставить. А дыра как была, так и осталась. Правда теперь ее звездочкой можно заткнуть. biggrin.gif

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

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

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

user posted image
twin
Я искренне не понимаю, зачем ты расшариваешь зависимости? Order в последнем случае. Именно он должен быть всегда новым, так как он часть агрегата. Я щас с ума сойду(((

Почему ты не понимаешь очевидного? Я же показал решение!

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

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

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

user posted image
chee
twin, потому что это удобно, для приведенного тобой примера это не удобно, но я который раз тебе говорю, так(как в твоем примере) зависимости нужно внедрять в реально проекте очень редко, нужно внедрять расшаренные объекты в основном. Я же тебе скинул карту зависимостей из реального проекта, там всего 3 таких случая.

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

Я вот возьму и на голубом глазу поставлю себе его в проект. И обрету кучу проблем, потому что надеюсь на то, что он отвечает общепринятым правилам DIC.

Цитата (chee @ 11.01.2021 - 23:12)
зависимости нужно внедрять в реально проекте очень редко, нужно внедрять расшаренные объекты в основном

Да ладно. Ты смотришь со строны CMS, фреймворка фактически. А если его юзать на клиентской стороне? Там совсем другие правила.

А это у тебя совсем не то.

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

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

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

user posted image
chee
Ок, давай поиграем в одну игру, вот код, обычный такой https://pastebin.com/eGgfCDQy

Техническое задание: Заведи его под любой удобный тебе контейнер зависимостей, ты можешь использовать внедрение через конструкторы или объявить сеттеры для зависимостей, если тебе так противно внедрение через свойства, не суть. Главное условие, у всех классов не должно появиться больше зависимостей чем у них сейчас задекларировано. То есть передача контейнера в конструктор и обращение к нему не допускается. Я покажу свой вариант после твоего.

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

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

Но это не так сложно на самом деле, как тебе кажется. С этим любой пимпл справится. Завтра покажу, сегодня я уже вмазал коньячку-с. smile.gif

Кстати, а почему ты это называешь command? Это с командой имеет общего то же, что я с балериной biggrin.gif

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

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

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

user posted image
chee
twin, переименовал с команды на экшен, то что называл командой действительно ей не являлось.

Цитата (twin @ 12.01.2021 - 21:11)
Но это не так сложно на самом деле, как тебе кажется. С этим любой пимпл справится.

моя цель что бы ты увидел сколько это кода потребует и что бы ты наконец понял как это работает на практике.

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

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

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

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

user posted image
chee
user posted image

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

Но вот выбрал время наконец то. Сейчас займемся.

Вообще конечно странная задача, я понимаю, что она заточена на твой контейнер. Навскидку она решается несложно, даже теми средствами, которые есть в моем контейнере. Я уже про другие не говорю. Завести в контейнер зкземпляр контейнера, немого покумекать с инициализацией и все должно получиться. Не так элегантно, как у тебя, но вполне рабоче.

Но мы не ищем легких путей. Я тут немного допилил свою свистоперделку, мне идея понравилась. Хотя она и не нова, но как то не обращал внимание. ВСе на пользу пошло, чем просто так время тратить.

Так что спасибо за наводку, ну и сейчас выложу решение. Карту могу прямо сейчас показать:
    $injectionsMap = [
'Container' => true,
'ActionSay' => \Examples\ActionSay::class,

'ActionBus' => [
\
Examples\ActionBus::class,
'storage' => \SplObjectStorage::class,
],


'ActionFactory' => [
\
Examples\ActionFactory::class,
'container' => 'Container'
],

'Application' => [
\
Examples\Application::class,
'actionFactory' => 'ActionFactory',
'actionBus' => 'ActionBus',
],
];


$container = (new \ABCDIC\Container)->setMaps($injectionsMap);


Цитата
Hello
world
!
Hello
!


Цитата (chee @ 12.01.2021 - 07:23)
Я покажу свой вариант после твоего.


Ну давай, хвались)))

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

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

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

user posted image
twin
Ну вот. Там еще все косо и криво, половина не работает, потому что собирал на коленке, времени нет совсем. Но проверить можно, твоя задача решается.

А, да, классы твои немного подрихтовал, чтоб через конструктор внедрялось.

class ActionFactory implements ActionFactoryInterface
{

/**
*
*
@var \Psr\Container\ContainerInterface
*/

protected $container;

public function __construct(array $dta)
{
$this->container = $dta['container'];
}

public function create($id)
{
return $this->container->get($id);
}

}


class ActionBus implements ActionBusInterface
{

/**
*
@var \SplObjectStorage
*/

protected $storage;

/**
*
@var ActionInterface[]
*/

protected $actions;


public function __construct(array $dta)
{
$this->storage = $dta['storage'];
}

public function add(ActionInterface $action)
{
$this->actions[] = $action;
}

public function run()
{
foreach ($this->actions as $action) {
$action->execute();
}
}

}


class Application
{
/**
*
@var ActionFactoryInterface
*/

protected $actionFactory;

/**
*
@var ActionBusInterface
*/

protected $actionBus;

public function __construct(array $dta)
{
$this->actionFactory = $dta['actionFactory'];
$this->actionBus = $dta['actionBus'];
}

/**
*
@param array $actions
*/

public function run(array $actions)
{
foreach ($actions as $action) {
$cmd = $this->actionFactory->create($action['action']);
$cmd->setOptions($action['options']);

$this->actionBus->add($cmd);
}

$this->actionBus->run();
}
}



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

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

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

user posted image
Быстрый ответ:

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