Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #22428 > unrolled thread

Iniezione delle dipendenze vs Service Locator

Started byalex <1j9448a02@lnx159sneakemail.com.invalid>
First post2018-12-16 12:52 +0100
Last post2018-12-16 18:46 -0800
Articles 11 on this page of 31 — 3 participants

Back to article view | Back to it.comp.www.php


Contents

  Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-16 12:52 +0100
    Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-16 17:28 +0000
      Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-17 08:50 +0100
        Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-17 10:51 +0000
          Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-18 14:36 +0100
            Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-20 12:42 +0000
              Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 14:49 +0100
                Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-20 17:39 +0000
                  Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 19:06 +0100
                    Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 19:28 +0100
                    Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-21 09:42 +0000
                      Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-21 14:47 +0100
                        Re: Iniezione delle dipendenze vs Service Locator fmassei@gmail.com - 2018-12-21 15:45 -0800
                          Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 11:55 +0100
                            Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-22 16:12 +0000
                              Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 17:33 +0100
                                Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-22 16:46 +0000
                                  Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 18:37 +0100
                                    Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-23 15:18 +0000
                                      Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-23 18:43 +0100
                                        Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-23 17:52 +0000
                                          Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-23 18:58 +0100
                                            Re: Iniezione delle dipendenze vs Service Locator fmassei@gmail.com - 2018-12-24 04:22 -0800
                                              Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-30 14:38 +0100
                          Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-22 13:04 +0100
          Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 16:18 +0100
            Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-20 17:37 +0000
              Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 19:21 +0100
                Re: Iniezione delle dipendenze vs Service Locator alex <1j9448a02@lnx159sneakemail.com.invalid> - 2018-12-20 20:19 +0100
                  Re: Iniezione delle dipendenze vs Service Locator Alessandro Pellizzari <shuriken@amiran.it> - 2018-12-21 09:45 +0000
    Re: Iniezione delle dipendenze vs Service Locator fmassei@gmail.com - 2018-12-16 18:46 -0800

Page 2 of 2 — ← Prev page 1 [2]


#22468

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2018-12-23 17:52 +0000
Message-ID<g8a0ajFnjjtU1@mid.individual.net>
In reply to#22467
On 23/12/2018 17:43, alex wrote:

> Il 23/12/2018 16:18, Alessandro Pellizzari ha scritto:
>>    public static function create() {
>>      $builder = new ControllerBuilder();
>>      $builder->logger = new ConsoleLogger();
>>    }

> ??????????????????????????????????????????
> bohhhhhhhhhh :D
> 
> $builder a chi ed a che serve????

Complimenti per aver trovato un bug in 70 righe di codice che ho scritto
di getto per aiutarti.

Buon Natale anche a te.

[toc] | [prev] | [next] | [standalone]


#22469

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-12-23 18:58 +0100
Message-ID<pvoil3$lh6$1@gioia.aioe.org>
In reply to#22468
Il 23/12/2018 18:52, Alessandro Pellizzari ha scritto:
> Complimenti per aver trovato un bug in 70 righe di codice che ho scritto
> di getto per aiutarti.

Hai voluto tu scriverle :D
La domanda che ho fatto era abbastanza semplice.
La risposta poteva essere semplicemente: create() non serve a un bel niente.
Ma siccome te le vai cercando :D

> Buon Natale anche a te.

Direi che una pausa natalizia ci serve proprio.
Buon Natale anche a te!!!

[toc] | [prev] | [next] | [standalone]


#22470

Fromfmassei@gmail.com
Date2018-12-24 04:22 -0800
Message-ID<21d0e44c-4c73-4fab-8f79-cd8152febeca@googlegroups.com>
In reply to#22469
ma con che faccia e che coraggio...
altro che buon natale :(

[toc] | [prev] | [next] | [standalone]


#22474

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-12-30 14:38 +0100
Message-ID<q0ahns$ub5$1@gioia.aioe.org>
In reply to#22470
Il 24/12/18 13:22, fmassei@gmail.com ha scritto:
> ma con che faccia e che coraggio...
> altro che buon natale :(
> 

C'è qualche problema?
Non capisco?

[toc] | [prev] | [next] | [standalone]


#22461

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-12-22 13:04 +0100
Message-ID<pvl9hn$bce$1@gioia.aioe.org>
In reply to#22458
Il 22/12/2018 00:45, fmassei@gmail.com ha scritto:
> Un builder restituisce un oggetto non costruibile in un singolo step, e.g.
> quando solo il costruttore non da un oggetto utilizzabile.

In pratica:

$pizza = new Pizza($farina_adatto, $lievito_adatto);
$pizza->metti($olive_scelte_dal_cliente1);
$pizza->metti($olio_scelto_dal_cliente1);
return $pizza;

$pizza = new Pizza($farina_adatto, $lievito_adatto);
$pizza->metti($olive_scelte_dal_cliente2);
$pizza->metti($olio_scelto_dal_cliente2);
return $pizza;

????

[toc] | [prev] | [next] | [standalone]


#22444

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-12-20 16:18 +0100
Message-ID<pvgc6f$gr3$1@gioia.aioe.org>
In reply to#22432
Il 17/12/2018 11:51, Alessandro Pellizzari ha scritto:
>>> Ora veniamo alla DI. La DI dà allo sviluppatore controllo totale su cosa
>>> passare a un oggetto. Invece di istanziare un oggetto e passargli il SL,
>>> gli passi direttamente le dipendenze. Lo svantaggio è che se istanzi un
>>> oggetto in profondità nel codice devi passare le dipendenze attraverso
>>> tutto l'albero.

Perchè istanziare in profondità (preferisco farlo solo in index.php o 
nell'SL)?

>> Anche l`SL è una dipendenza che verrebbe passata allo stesso modo, o 
>> sbaglio?
> 
> Può esserlo. Io preferisco essere esplicito e passarla con DI, ma 
> potrebbe essere un singleton (o un borg, per i pignoli :P) e lo istanzi 
> dove ti serve.
> 
>> Per non violare il principio di DI, gli istanziamenti non andrebbero 
>> fatti solo in uno dei file principali (index.php, Controller.php, ecc.)?
> 
> Gli istanziamenti li fai o nel index.php (e poi li infili nel SL) o nel 
> SL stesso. In questo modo hai tutto nello stesso posto.

Appunto.

 > Nella mia esperienza conviene sempre tenere la struttura più piatta
 > possibile, ma siccome non è sempre facile, io preferisco avere un SL >che
 > passo ai livelli più alti, i quali poi usano DI prendendo la roba dal >SL
 > quando istanziano un oggetto.

In profondità suppongo.
Prima dici che vuoi instanziare in profondità, poi in superfice (SL), 
poi di nuovo in profondità, boh :D

[toc] | [prev] | [next] | [standalone]


#22445

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2018-12-20 17:37 +0000
Message-ID<g822a7F1gggU1@mid.individual.net>
In reply to#22444
On 20/12/2018 15:18, alex wrote:

> Il 17/12/2018 11:51, Alessandro Pellizzari ha scritto:

>  > Nella mia esperienza conviene sempre tenere la struttura più piatta
>  > possibile, ma siccome non è sempre facile, io preferisco avere un SL 
>  >che
>  > passo ai livelli più alti, i quali poi usano DI prendendo la roba dal 
>  >SL
>  > quando istanziano un oggetto.

> In profondità suppongo.
> Prima dici che vuoi instanziare in profondità, poi in superfice (SL), 
> poi di nuovo in profondità, boh :D

Il SL è "parallelo", non in profondità.

Il SL viene creato da index.php (profondità 0), e passato ai controller 
(via router o via singleton)

I servizi vengono creati alla bisogna dal SL.

Siccome è il controller (profondità 1) che invoca i servizi dal SL, si 
istanziano quasi in superficie.

Poi il controller può passare i servizi più giù, se necessario, via DI. 
Per esempio passando il logger alla view (prof. 2) che lo passa al 
template engine (prof. 3), che magari usa un minificatore (prof. 4), che 
magari ha un DOM parser (prof. 5), ecc. ecc.

Bye.

[toc] | [prev] | [next] | [standalone]


#22448

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-12-20 19:21 +0100
Message-ID<pvgmtd$5c8$1@gioia.aioe.org>
In reply to#22445
Il 20/12/2018 18:37, Alessandro Pellizzari ha scritto:
> 
> Il SL è "parallelo", non in profondità.
> 
> Il SL viene creato da index.php (profondità 0), e passato ai controller 
> (via router o via singleton)
> 
> I servizi vengono creati alla bisogna dal SL.
> 
> Siccome è il controller (profondità 1) che invoca i servizi dal SL, si 
> istanziano quasi in superficie.
> 
> Poi il controller può passare i servizi più giù, se necessario, via DI. 

In che modo?
La DI dovrebbe essere fatta (tramite costruttore o setter) solo in 
superfice dall'index.php o dall'SL.

> Per esempio passando il logger alla view (prof. 2) che lo passa al 
> template engine (prof. 3), che magari usa un minificatore (prof. 4), che 
> magari ha un DOM parser (prof. 5), ecc. ecc.
> 
> Bye.

[toc] | [prev] | [next] | [standalone]


#22450

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2018-12-20 20:19 +0100
Message-ID<pvgqa9$mje$1@gioia.aioe.org>
In reply to#22448
Il 20/12/2018 19:21, alex ha scritto:
> La DI dovrebbe essere fatta (tramite costruttore o setter) solo in 
> superfice dall'index.php o dall'SL.

O dall'SLF (ServiceFactoryLocator), vedi l'altro post.

     $x = new ServiceLocator();// te lo ricordi?

     // iniezione di A, B, C (vedi l'altro post)

     $tester = new Tester;
     // iniettiamo un debbugger nel tester (ecco la DI di cui parlavo)
     $tester->setDebugger(new Debugger);
     $x->setServiceTest($tester);

     return $x;// esattamente come nell'altro post

[toc] | [prev] | [next] | [standalone]


#22454

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2018-12-21 09:45 +0000
Message-ID<g83r14Fd3mkU2@mid.individual.net>
In reply to#22450
On 20/12/2018 19:19, alex wrote:

>      $x = new ServiceLocator();// te lo ricordi?
> 
>      // iniezione di A, B, C (vedi l'altro post)
> 
>      $tester = new Tester;
>      // iniettiamo un debbugger nel tester (ecco la DI di cui parlavo)
>      $tester->setDebugger(new Debugger);
>      $x->setServiceTest($tester);
> 
>      return $x;// esattamente come nell'altro post

Stai usando la DI per iniettare dipendenze nel Service Locator.

Per definizione il SL dovrebbe essere quello che gestisce TUTTE le
dipendenze.

Lo stai facendo al contrario.

Bye.

[toc] | [prev] | [next] | [standalone]


#22430

Fromfmassei@gmail.com
Date2018-12-16 18:46 -0800
Message-ID<a732615d-9275-414f-9cab-1356cc31e901@googlegroups.com>
In reply to#22428
On Sunday, December 16, 2018 at 6:57:17 AM UTC-5, alex wrote:
> https://medium.com/@ivorobioff/dependency-injection-vs-service-locator-2bb8484c2e20
> 
> cosa ne pensate?
>

La fine:

"Hope this article cleared some things up for you and you enjoyed reading it.
If not, then you must be already smartest programer out there"
Well maybe not, Igor "software developer since 2010" you can just ... .. .
'nuf said.
Ha solo scritto in breve come si usano.

Alessandro in un post ha scritto meglio e più chiaramente quello di cui
voleva parlare.

Quindi niente, se conosci Igor di persona puoi dirgli che, visto che ho un
ad-blocker, oltre la figura meschia, nemmno si prenderà il centesimo del
mio click.

Ah, ma prima o poi tutti 'sti poveracci spariranno, mica che no.


Ciao!

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | it.comp.www.php


csiph-web