Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (8) 1 2 [3] 4 5 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Мой DI контейнер
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (twin @ 12.04.2016 - 06:52)
Не догоняю. Покажи на примере плиз.

Я под вторым объектом имею ввиду не зависимость. А второй экземпляр основного класса.

$container = new \Cheevauva\Container(array(
'Ron\MysqlWrapper' => array(
'config' => 'Ron\Config',
),
));


$obj1 = $container->get('Ron\MysqlWrapper');
// Вот этот
$obj2 = $container->get('Ron\MysqlWrapper'); //????


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 1 день
Карма: 40




bestxp, я понял так как ты описал, как по мне это должно быть за пределами ответствнности di, так как это явное пересечение с функционалом фабрик. Хоия если подумать, это годный способ избежать внедрения контейнера в пользовательские обьекты


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 1 день
Карма: 40




twin, код точно правильный для вопроса?


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (chee @ 12.04.2016 - 07:07)
код точно правильный для вопроса?

Да. Почему сомнения? Разве не может быть два объекта в одном скрипте?


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 1 день
Карма: 40




twin, клонирование и фабрики тебе в помощь


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (chee @ 12.04.2016 - 07:14)
клонирование и фабрики тебе в помощь

Ясно. Фабрика фабрик.
Слуш, а у тебя CMS так же работает? Я вот не пойму, в чем профит от такого конейнера. Ты запретил конструкторы, второй объект инициализировать нельзя просто так. А чем это от статики отличается?


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1672
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 8 дней
Карма: 94




Цитата
$obj1 = $container->get('Ron\MysqlWrapper');
// Вот этот
$obj2 = $container->get('Ron\MysqlWrapper'); //????

http://php.net/manual/en/language.oop5.references.php

Как передается object.


--------------------
Programming: Private lessons via skype £45/h

Частные уроки в Лондоне / удаленно по skype.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Oyeme
Причем тут это вообще? Мне нужно два разных объекта одного сервиса. А у него стоит
        if (isset($this->objects[$className])) {
return $this->objects[$className];
}
Я все время получаю один и тот же объект. Как два разных сделать? Вот в чем вопрос был.


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 1 день
Карма: 40




Цитата (twin @ 12.04.2016 - 11:18)
Ясно. Фабрика фабрик.

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

namespace App;

$container = new Cheevauva\Container(array(
'App\Field\StringField' => array(
'someDependency' => 'App\SomeClass',
),

'App\FieldFactory' => array(
'container' => 'Cheevauva\Container',
),
));


namespace FieldFactory
{
public function get($field)
{
$fields = array(
'string' => 'App\Field\StringField',
'enum' => 'App\Field\Enum',
);


return clone $this->container->get($fields[$field]);
}
}


$container->get('App\FieldFactory')->get('enum');


Если объект надо доностроить, то доностраиваем после клонирования.


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1672
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 8 дней
Карма: 94




Цитата
не очень понятно, почему будет каша, было бы не плохо примером показать.


Mediator implements ContainerInterface {}
UseServiceLocator implements ContainerInterface {}

Общий interface с общими методами.

Cейчас у тебя разная реализаци под разные interface.
Соотвественно у тебя куча условий на провeрку того или иного интерфейса.Что можно было бы упростить обьеденив в единый interface с общими методами.

if ($object instanceof \Cheevauva\Contract\Container\Mediator) {
$this->objects[$className] = $object->get();
}


https://github.com/cheevauva/container/blob...er/Mediator.php

https://github.com/cheevauva/container/blob...viceLocator.php


Цитата
Как два разных сделать? Вот в чем вопрос был


В его примере только клонирование обьекта либо через создание экземпляра класса.

В zend как я помню можно указывать ServiceLocator тип shared.Соотвестенно будет создан новый обьект.

http://blog.alejandrocelaya.com/2014/10/09...nd-framework-2/
Цитата

Shared services
By default, the ServiceManager allways returns the same instance of a service when you request it multiple times. It is created the first time and cached during the request. That's what a shared service is. A non-shared service will create a new instance every time it is requested.


--------------------
Programming: Private lessons via skype £45/h

Частные уроки в Лондоне / удаленно по skype.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (chee @ 12.04.2016 - 07:36)
Контейнер, настраивает тебе конкретную зависимость которую ты можешь взять в фабрике.

Ну ясно. В твоем контейнере этого нету. Тогда нужно было и фабрику туда тянуть))
Иначе он реально от статики не отличается. У прыща наоборот всё кстати помоему.


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


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


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 1 день
Карма: 40




Цитата (Oyeme @ 12.04.2016 - 11:38)
Соотвественно у тебя куча условий на провeрку того или иного интерфейса.Что можно было бы упростить обьеденив в единый interface с общими методами.

А что мне даст общий интерфейс, мне же нужно разное поведение в зависимости от интерфейса.

Кстати новую версию выкатил, с исправлеными замечаниями

https://github.com/cheevauva/container/blob...ntainer.php#L33


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 1 день
Карма: 40




Цитата (twin @ 12.04.2016 - 11:54)
И кстати, получается, что для инициализации копии объекта нужно алиас? И его тоже куда то прописать? Не слишком сложно для такой простой задачи?

Я не понимаю в чем сложность. Порождением новых объектов обычно занимаются фабрики, они инкапсулируют всю эту кухню. У меня нет ни одного случая, где бы мне нужен было использовать clone не в контексте какой-либо фабрики.


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 1 день
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (chee @ 12.04.2016 - 08:05)
У меня нет ни одного случая, где бы мне нужен было использовать clone не в контексте какой-либо фабрики.

Ну ты же в паблик выкатил его. У тебя нет, у меня есть. Как юзать? Мне может вообще фабрика без надобности. Городить её из-за одной копии объекта?




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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (8) 1 2 [3] 4 5 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса