Dat kan niet. De drie instanties zijn drie op zichzelf staande objecten, met hun eigen stukje geheugen en hun eigen waardes voor de variabelen.
Als je wil dat bepaalde gegevens altijd in een object geset worden dan moet je dat doen via een factory of service container die bij het aanmaken de properties set.
Als je drie instanties van je class hebt, dan zal je linksom of rechtsom drie keer die gegevens moeten injecteren. Tenzij je het hardcoded in de constructor doet, maar dat lijkt me een zeer slecht idee, want dan kan je het nooit meer voor een andere applicatie met andere Twitter keys gebruiken.
Dus of injecteert het in een property, of je injecteert het via de constructor, of je maakt een config object (met daarin de keys, de secrets, de service urls etc) en injecteert dat object. Maar hoe dan ook zal je dat voor elke instantie moeten doen.
agja mss is het ook wel logisch dat elke instantie zijn keys moet setten, wie weet heb je ooit eens een situatie dat bv twitterstream clas andere keys heeft dan de tweet opzich.
het is inderdaad ook de bedoeling code te re-usen. dus ik laat het zo
Dat is inderdaad ook hoe ik het heb. Met in dat config object dan ook nog de urls, de secrets en de tokens.
Dit config object zal je dan wel bij elke nieuwe instantie die je aanmaakt moeten injecteren (zoals je nu doet in de constructor). Op zich hoef je dan maar op 1 plek de gegevens te hebben, namelijk op de plek waar je dat config object aanmaakt, maar het config object blijf je drie keer injecteren. Daar ontkom je niet aan.
Enige is dat ik niet de gegevens hardcoded in het config object heb, maar dat terzijde.
@wouter: Ik ben het op zich eens met de stelling dat properties niet publiek moeten zijn maar ik dacht dat het voor die config niet zo een vaart zou lopen. Maar je hebt gelijk. Die container is een symfony object? en hoe ziet een simpele vorm van die klas er uit?
Die config gegevens moeten door de applicatie ingegeven worden. Dat kan uit een database komen, kan uit een applicatie config object komen, kan ook in hardcoded applicatie constante zitten.
Mijn Oauth config class is een algemene class die dus niet applicatie specifieke gegevens in zich heeft zitten.
Frank, nee die Container is gewoon een container klasse. Hoeft niet perse die van Symfony te zijn (die heeft overigens ook een ander interface dan ik nu toonde).