OOP vraagjes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Database ontwikkelaar

Functieomschrijving Wil jij aan gave logistieke softwareprojecten werken en bij een uniek softwarebedrijf in de regio van Tilburg? Wacht niet langer en reageer snel op deze vacature. Als Database ontwikkelaar ga je aan de slag het schrijven van stored procedures en verder uitbouwen van de SQL database. Je werkt in een database team, met allemaal mensen die energie krijgen van software en techniek. Verder krijg je als taak: Optimaliseren en uitbouwen van de MS SQL databases die gebruikt worden; Optimaliseren van query's, waardoor er efficiënter gewerkt kan worden; Je werkt met de technieken T-SQL of PL/SQL; Bij interesse kan je

Bekijk vacature »

Consultant Low Code Developer

Functie omschrijving Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Voor een mooie opdrachtgever in omgeving Delft zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten. Onderdelen functie Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan Mendix of Betty Blocks. Je bent verantwoordelijk voor

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

PHP developer (Laravel, Docker, Gitlab-CI)

Functie Het IT-team bestaat momenteel uit 4 ontwikkelaars. Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. Een groot deel van de systemen is gebouwd met behulp van het Laravel framework en PHP (minimaal 7.2), Docker voor lokaab gebruik en Gitlab-CI voor het deployen

Bekijk vacature »

PHP Laravel Ontwikkelaar

Functie omschrijving Weet jij alles over Laravel en krijg je energie van het developen van software hiermee? Laat het weten want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch voor klein bedrijf welke softwareoplossingen maakt voor hun klanten. Jouw taken hierbij: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Documentatie schrijven over applicaties. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein bedrijf. Er werken circa 15 medewerkers, verdeeld in meerdere teams, zoals back-end

Bekijk vacature »

Senior Fullstack Developer (GOLang, TypeScript)

Bedrijfsomschrijving Our client is one of the large worldwide accounting firms. Functieomschrijving We are looking for a senior (all-round) developer (Project On Demand / Tax Technology) Uses as much as possible technology in support of the development process: Git, Jenkins, Docker, npm, skaffold, helm, etc. We are looking for a real hands-on developer; ie not a team lead or other managerial-style role; Acts with integrity both internally and externally and takes personal responsibility in this respect; Curious about the developments within their field and driven to make a difference with the team; Able to empathize with colleagues and stakeholders and

Bekijk vacature »

Medior/Senior Software Developers gezocht in de Ra

Functie Op dit moment staan er posities open voor de volgende functies: Front-end, Back-End & Fullstack software developer. Als Front-End software developer werk je met JavaScript en de bijbehorende technologieën zoals TypeScript, Angular, React, Vue en Svelte. Als Back-End software developer ben je bezig in NodeJS en doe je dit met behulp van AWS, NoSQL, REST en GraphQL. Je krijgt leuke en uitdagende opdrachten met een gemiddelde duur van anderhalf jaar. Hier werk je in een team met andere IT’ers aan het ontwikkelen en verbeteren van software. Je wordt begeleid door een accountmanager die fungeert als jouw aanspreekpunt. Het team

Bekijk vacature »

Freelance Fullstack Java Developer

Functieomschrijving Voor een opdrachtgever in omgeving Rotterdam zijn wij op zoek naar ervaren Fullstack JAVA Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid hebben

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Dordrecht zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

.NET developer

Functie Als junior .NET ontwikkelaar ga jij aan de slag in één van de 5 IT teams van dit bedrijf. Jullie werken op basis van interne klantprojecten aan voornamelijk webapplicaties. Dit betekent dat jij continu uitgedaagd wordt en veelal met verschillende soorten projecten bezig bent. Het gave is dan ook dat jullie als team samen bekijken welke technieken het beste passen bij het project waar jullie verantwoordelijk voor zijn. Zo kan het zijn dat jij als .NET developer gaat werken aan een project, maar dat jullie als team liever gebruik maken van Haskell of F# om de klus te klaren.

Bekijk vacature »

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Front-end Developer

Functie omschrijving Wij zijn op zoek naar een Front-end Developer! Als Front-end Developer binnen dit softwarebedrijf ga je de frontends voor zowel je eigen interne projecten als die voor klanten opzetten, onderhouden en uitbreiden. Je zet ideeën om naar mooie successen voor de klanten. Dat is in een notendop wat je gaat doen! Wat kun je verwachten? Je werkt aan de doorontwikkeling van bestaande maatwerkapplicaties. Bijvoorbeeld wanneer de klant de applicatie wil uitbreiden met een nieuwe feature; Samen met het team van backenders en desginers zet je nieuwe ideeën van klanten om naar mooie oplossingen; Je werkt met verschillende frameworks.

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

C# .NET Developer

Functie omschrijving Wij zijn op zoek naar een C# .NET Developer voor een bedrijf in de omgeving van Utrecht! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans! Je kunt een uitdagende rol gaan vervullen als C#.NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving van Utrecht. Je zult gaan samenwerken met collega's die over de hele wereld verspreid zitten. Dit bedrijf is zeer vooruitstrevend en werkt met de nieuwste technieken. Als C#.NET Developer ga jij je bezig houden met het volgende: Je blijft op de hoogte van

Bekijk vacature »

Pagina: « vorige 1 2

Ozzie PHP

Ozzie PHP

10/10/2013 01:21:41
Quote Anchor link
Ah, haha... zo. Nu snap ik wat je bedoelt. Tis al laat :)

Nog een keer dan.

Een service is een class die OF een andere class nodig heeft OF een class die door een andere class gebruikt kan worden en waarvan de constructor argumenten of altijd hetzelfde zijn of niet aanwezig zijn.

Klopt ie nu? :)
 
PHP hulp

PHP hulp

27/11/2024 23:53:54
 
Wouter J

Wouter J

10/10/2013 01:26:20
Quote Anchor link
Ja, wellicht met enkele uitzonderingen, maar die kan ik nu nog niet bedenken. Het komt ook een beetje aan op intuïtie.

En je hebt natuurlijk ook andere situaties. In symfony kun je services bijv. taggen zodat je die services allemaal kunt opvragen. Hierdoor kun je heel snel loggers, commands, blocks, admin extensies, routers, etc. registreren.
 
Ozzie PHP

Ozzie PHP

10/10/2013 01:30:22
Quote Anchor link
Wouter J op 10/10/2013 01:26:20:
Ja, wellicht met enkele uitzonderingen, maar die kan ik nu nog niet bedenken. Het komt ook een beetje aan op intuïtie.

Oh oké. Het kwartje moet bij mij ook nog even goed vallen. Ik hoop dat dat lukt. Maar uitgaande van wat jij nu zegt... Bijvoorbeeld een User, die heeft als argument een wisselend id. Een User is dus geen service. Correct? En hetzelfde geldt dan bijvoorbeeld voor een Product of een NewsArticle. Toch?

Wouter J op 10/10/2013 01:26:20:
En je hebt natuurlijk ook andere situaties. In symfony kun je services bijv. taggen zodat je die services allemaal kunt opvragen. Hierdoor kun je heel snel loggers, commands, blocks, admin extensies, routers, etc. registreren.

Hoe bedoel je dat je die services kunt opvragen? Als een soort tooltje ofzo om te zien welke services je tot je beschikking hebt?
 
Ward van der Put
Moderator

Ward van der Put

10/10/2013 06:36:12
Quote Anchor link
Wouter J op 10/10/2013 01:09:44:
Klopt perfect. PDF creator is een service omdat hij aan voorwaarde 2 voldoet: classes kunnen hem nodig hebben en hij heeft veen veranderende argumenten in de constructor.

Er is een categorie services waarvoor dit allemaal geldt: de databaseservices. Je weet niet zeker of en wanneer een klasse databaseservices nodig heeft. En je hebt geen argumenten in de constructor nodig. Toch zou ik dat implementeren met $dbh = new Database(); in plaats van een servicecontainer.

Sterker nog, bij dataservices heb je zelf een extra reden om een servicecontainer te gebruiken: connection pooling. Maar dan nog is het voordeel daarvan in de praktijk te gering om een service container te gebruiken.
 
Wouter J

Wouter J

10/10/2013 08:00:30
Quote Anchor link
>> En hetzelfde geldt dan bijvoorbeeld voor een Product of een NewsArticle. Toch?

Exact!
 
Ozzie PHP

Ozzie PHP

10/10/2013 08:25:05
Quote Anchor link
Ward van der Put op 10/10/2013 06:36:12:
Er is een categorie services waarvoor dit allemaal geldt: de databaseservices. Je weet niet zeker of en wanneer een klasse databaseservices nodig heeft. En je hebt geen argumenten in de constructor nodig. Toch zou ik dat implementeren met $dbh = new Database(); in plaats van een servicecontainer.

Waarom zou je van een database geen service maken Ward? Een databaseservice heeft een connectie nodig. Dan is het toch juist handig dat wanneer jij de database nodig hebt, je alleen maar dit hoeft te doen:

$db = $this->services->get('database');

Verder hoef je dan helemaal niks in te stellen in je code. Verander je een keer je wachtwoord, dan hoef je dat alleen in je service-configuratiebestand aan te passen en overal in je code werkt het weer. (Wouter, mee eens?)

Wouter J op 10/10/2013 08:00:30:
>> En hetzelfde geldt dan bijvoorbeeld voor een Product of een NewsArticle. Toch?

Exact!

Mooi, dan begin ik het eindelijk te begrijpen :)

Het enige wat me dan wel opvalt is dat je een niet-service-class (zoals een Product of een NewsArticle) niet makkelijk kunt vervangen door een andere class. Dan zul je dus overal de class-naam moeten aanpassen, of de code in de class zelf. Of is er nog een andere manier?

Eerder zei jij trouwens dit:

Wouter J op 09/10/2013 17:00:59:
Een ander mooi voordeel van een service container is dat alle objecten standaard niet opnieuw worden geinitialiseerd. Dat gebeurd 1 keer en daarna niet meer, behalve als je expliciet zegt dat hij elke keer een nieuwe instance moet terug geven. Maar in dat geval is de class 'stateful', en dat is iets wat je moet zien te vermijden.

Kun je uitleggen wat je bedoelt met dat een class stateful is, en waarom je dit moet zien te vermijden? (zijn er ook gevallen waarin een service juist wel stateful moet zijn?)
Gewijzigd op 10/10/2013 08:46:57 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

10/10/2013 08:58:31
Quote Anchor link
Ozzie PHP op 10/10/2013 08:25:05:
Waarom zou je van een database geen service maken Ward? Een databaseservice heeft een connectie nodig. Dan is het toch juist handig dat wanneer jij de database nodig hebt, je alleen maar dit hoeft te doen:

$db = $this->services->get('database');

Verder hoef je dan helemaal niks in te stellen in je code. Verander je een keer je wachtwoord, dan hoef je dat alleen in je service-configuratiebestand aan te passen en overal in je code werkt het weer. (Wouter, mee eens?)

Het is ook een service, dat staat vast. Maar dat wil nog niet zeggen dat je dus een servicecontainer nodig. Laten we de termen service en servicecontainer niet op één hoop vegen.

Zoals ook blijkt uit je eerdere vragen, heb je twee problemen: (a) wat zijn mijn services en (b) hoe stop ik services in de servicecontainer en haal ik ze er uit?

Ik wil een new Foo() kunnen gebruiken als een black box: ik hoef niet te weten dat Foo de service/klasse Bar nodig heeft. Wat ik al helemaal niet wil, is vóóraf voor een keuze staan: in situatie x heeft Foo de service Bar nodig, in situatie y niet. En wat ik tot slot absoluut niet wil, is dat de service Bar wordt geladen en geconfigureerd wanneer Foo die niet nodig heeft; "wel eens nodig zou kunnen hebben" is geen goed ontwerpbeginsel.

Een servicecontainer heeft in bepaalde situaties absoluut voordelen. Alleen zijn die betrekkelijk gering als je ze naast andere mogelijkheden legt: namespaces, autoloaders, dependency injection, wrappers, aliassen...
 
Ozzie PHP

Ozzie PHP

10/10/2013 09:09:58
Quote Anchor link
@Ward:

Quote:
Zoals ook blijkt uit je eerdere vragen, heb je twee problemen: (a) wat zijn mijn services en (b) hoe stop ik services in de servicecontainer en haal ik ze er uit?

Wat betreft punt a) heb (had) je volledig gelijk. Wat punt b) betreft niet, want ik weet hoe ik de services erin stop en eruit haal.

In jouw voorbeeld heb je het over een new Foo(); Dit betekent dat telkens wanneer jij Foo gebruikt er een nieuwe instantie van die class wordt aangemaakt. Bij een service is dit niet het geval. Je gebruikt door de applicatie heen telkens dezelfde instantie.

Quote:
En wat ik tot slot absoluut niet wil, is dat de service Bar wordt geladen en geconfigureerd wanneer Foo die niet nodig heeft; "wel eens nodig zou kunnen hebben" is geen goed ontwerpbeginsel.

Dit is met services ook juist niet aan de orde. Lees de definitie hieronder...

@Wouter:
Nog even terugkomend op mijn vorige reactie... Als we tegenwoordig programmeren gebruiken we eigenlijk altijd een framework. Procdurele code doen we niet meer aan. Dit betekent dat (correct me if i'm wrong!) eigenlijk alle classes binnen een andere class staan. Want je laadt de core class, en feitelijk gezien speelt alles zich daarbinnen af. Mee een? Zo ja, dan is iedere class dus in feite een class die je binnen een andere class kunt gebruiken, en dus kunnen we de definitie van een service inkorten tot:

"Een service is een class die geen constructor-argumenten heeft, of een class die constructor-argumenten heeft die altijd hetzelfde zijn."

Wat vind je daarvan?
 
Ward van der Put
Moderator

Ward van der Put

10/10/2013 10:00:22
Quote Anchor link
Ozzie PHP op 10/10/2013 09:09:58:
In jouw voorbeeld heb je het over een new Foo(); Dit betekent dat telkens wanneer jij Foo gebruikt er een nieuwe instantie van die class wordt aangemaakt. Bij een service is dit niet het geval. Je gebruikt door de applicatie heen telkens dezelfde instantie.

Dat klopt gedeeltelijk en ik noemde een belangrijk voorbeeld: connection pooling. Als een connection pool nodig hebt, zou ik absoluut een servicecontainer gebruiken. Alleen is en blijft dat een keuze en een ontwerpbeslissing, geen verplichting. Er kleven namelijk ook nadelen aan.

Meer technisch is het niet zo'n issue: bij het verlaten van een methode treedt automatisch de garbage collector in werking. Zou je voor 15 objecten in 15 klassen 15 keer een new Database() nodig hebben, dan zijn er nooit 15 instanties actief. Je aanname is hier deels onjuist: het zijn er in totaal 15, maar nooit 15 tegelijk.

Met andere woorden: stel jezelf ook de vraag of de servicecontainer die je zelf bouwt beter en sneller is dan wat PHP en je databaseserver allemaal al in huis hebben voor het beheer van processen en geheugengebruik.
 
Ozzie PHP

Ozzie PHP

18/10/2013 12:51:44
Quote Anchor link
Toch nog even een vraagje over services.

Eerder zei ik dit:

Quote:
Bijvoorbeeld een User, die heeft als argument een wisselend id. Een User is dus geen service.

Toch vraag ik me af of dit klopt. Ik kan me voorstellen dat ik een User in meerdere classes nodig heb (bijv. om de naam op te vragen e.d.). Daarom lijkt het me handig als het wel een service is. Ik zou er een service van kunnen maken door het ID niet mee te geven aan de constructor, maar in plaats daarvan een setID method te gebruiken. Maar is dit de juiste manier vraag ik me nu dus af, of is een User simpelweg geen service? (En indien het geen service is, hoe krijg ik de User dan in alle classes beschikbaar? Telkens als argument doorgeven?)
 
Wouter J

Wouter J

18/10/2013 12:53:59
Quote Anchor link
De User is geen service. Wel bijv. een SecurityContext class die o.a. de huidige User class vasthoudt
 
Ozzie PHP

Ozzie PHP

18/10/2013 12:58:49
Quote Anchor link
Dankjewel Wouter. Maar stel nu dat ik ergens de gegevens van de User nodig heb, bijvoorbeeld in de header (u bent ingelogd als...) en ergens op de pagina zelf (Welkom...), moet ik dan het user_id opslaan in de sessie en vervolgens 2x een new User object aanmaken? Is dat de bedoeling?
 
Wouter J

Wouter J

18/10/2013 13:41:53
Quote Anchor link
Nee, zoals ik zeg een SecurityContext met het huidige user object erin:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$securityContext
= $container->get('security.context'); // dit wordt natuurlijk geinjecteert

echo 'U bent ingelogt als '.$securityContext->getUser()->getName();
?>
 
Ozzie PHP

Ozzie PHP

18/10/2013 14:06:42
Quote Anchor link
Ah zo!

Waarmee injecteer je die security context? Want het User object kun je niet injecteren omdat het geen service is toch?
 
Wouter J

Wouter J

18/10/2013 14:26:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php

/**
 * @Service
 */

class SecurityContext
{
    private $user;

    public function setUser(UserInterface $this->user);

    public function getUser()
    {

        return $this->user;
    }
}


/**
 * @Service
 */

class Authentication
{
    private $context;

    /**
     * @Inject(service="security.context")
     */

    public function __construct(SecurityContext $this->context);

    public function authenticate(Request $request)
    {

        $user = // ... get the user object

        $this->context->setUser($user);
    }
}

?>
 
Ozzie PHP

Ozzie PHP

18/10/2013 14:33:37
Quote Anchor link
Thanks voor het voorbeeld Wouter!
 

Pagina: « vorige 1 2



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.