[oop] waar hoort het ID?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

28/08/2014 17:35:12
Quote Anchor link
Hey guys,

Een vraagje. Als ik een service-object toevoeg aan een service-container, wat is dan logischer:

1) Ik geef het ID mee aan het service-object zelf, en de container haalt het ID uit het service-object:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$service
= new service($definition, 'foo'); // foo is het ID
$container->add($service);
?>

2) Ik geef het ID mee aan de container (het service-object kent z'n eigen ID niet):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$service
= new service($definition);
$container->add($service, 'foo');
?>

Wat is logischer, en waarom?
 
PHP hulp

PHP hulp

20/04/2024 01:11:06
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/08/2014 17:44:27
Quote Anchor link
1) is logischer omdat het id gewoon data is van het object zelf en niet van de container. wat ga je doen als je meerdere objecten van hetzelfde type hebt in je container? ga je daar een aparte array voor aanmaken dan? not done lijkt me.
 
Ozzie PHP

Ozzie PHP

28/08/2014 17:47:40
Quote Anchor link
Oké, thanks!

>> wat ga je doen als je meerdere objecten van hetzelfde type hebt in je container

Wat bedoel je met "meerdere objecten van hetzelfde type"?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/08/2014 17:48:54
Quote Anchor link
een array ;-)

Toevoeging op 28/08/2014 17:51:41:

die container houdt meerdere services in beheer right?

dat doe je neem ik aan met behulp van een array
 
Wouter J

Wouter J

28/08/2014 17:53:36
Quote Anchor link
Is een moeilijke vraag. In principe is het een identifier voor de service in een container, dus het is onderdeel van de container en niet van de service. Aan de andere kant gebruik je de identifier van een service in de service definitie om hem bijv. te injecteren. Wanneer het ID onderdeel is van de container kan het zo zijn dat dezelfde service definitie in 2 containers een compleet ander ID heeft, wat leid tot het aanpassen van de service definities die hem gebruiken.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/08/2014 18:00:59
Quote Anchor link
service definities is voor mij wat vaag..

maar in de container kun je kiezen voor:

$services[] = new Service($id);

of

$services[$id] = new Service(); // nadeel is je kunt geen twee services opslaan met hetzelfde id
// voordeel is je hebt geen foreach nodig om een object met id x te vinden

of zit ik nu over iets anders te dubben dan jullie?
Gewijzigd op 28/08/2014 18:01:36 door Frank Nietbelangrijk
 
Wouter J

Wouter J

28/08/2014 19:36:20
Quote Anchor link
Hmm, Frank heeft daar een goed punt. Als je het ID loskoppelt van de service definitie kun je meerdere services maken vanuit dezelfde definitie. Zo kun je bijv. een event dispatcher voor flow events, maar ook een event dispatcher voor domain events maken vanuit dezelfde definitie.
 
Ozzie PHP

Ozzie PHP

28/08/2014 20:40:47
Quote Anchor link
@Frank:

>> $services[$id] = new Service(); // nadeel is je kunt geen twee services opslaan met hetzelfde id

Dit is de manier waarop ik het wil opslaan in de array binnen de container. Ik wil dus niet dat er meerdere services zijn met dezelfde ID, want aan de hand van de ID moet ik een unieke service kunnen ophalen, bijv. $container->get('foo') waarbij 'foo' een unieke identifier is. De vraag is nu alleen, waar komt die $id vandaan? Vanuit de service $service = new service($definition, 'foo') of geef je 'm mee aan de container $container->add($service, 'foo')? Wat is de beste optie? Hoort het ID bij de service, of hoort het bij de container?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.