interface

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Developer

Dit ga je doen Ontwikkelen aan de software dat beschikbaar is op de substations; Ontwikkelen in C++, C, Python en JavaScript. Daarnaast op een Embedded Linux omgeving, opgebouwd met containers en DevOps; Meewerken aan cyber security (OWASP); Uitvoeren/bouwen van geautomatiseerde testen in samenwerking met de Quality Specialist; Vertalen van wensen van de klanten/business naar werkbare/duurzame oplossingen. Hier ga je werken Als Software Ontwikkelaar kom je te werken bij een organisatie gericht op de (internationale) energiemarkt, waar wordt gewerkt voor het verwerven en verwerken van realtime, high quality data. Er wordt gewerkt vanuit het hart van de substations en direct voor

Bekijk vacature »

Medior Java developer

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 »

Starter/junior Magento developer gezocht!

Functie Je komt te werken in een zelfsturend team waarin vertrouwen voorop staat en inbreng en ideeën worden gewaardeerd. Ook staat innovatie centraal. Ze bieden jou de mogelijkheid om jezelf door te ontwikkelen. Denk hierbij aan cursussen en een persoonlijk ontwikkelplan. Je komt terecht in het team van momenteel 4 (ervaren) collega’s en zal meewerken aan de doorontwikkeling en nieuwbouw van de Magento platformen van meerdere opdrachtgevers volgens Agile/Scrum. Denk hierbij aan nieuwe functionaliteiten, UX en koppelingen met verschillende back-end systemen. Als starter/junior developer zul je direct begeleid worden door een senior uit het team. Het is van belang dat

Bekijk vacature »

Back-end Software Developer

Functie omschrijving Ben jij op zoek naar een uitdagende development functie bij een klein gespecialiseerd softwarebedrijf? Wil jij graag hybride werken (combi tussen thuis + kantoor), loop jij warm voor maatwerk software en voel jij je prettig in een informele cultuur? Zoek dan niet verder! Reageer direct! Voor een gewilde werkgever in omgeving Tilburg zoeken wij een back-end software developer met een aantal jaar werkervaring. Je gaat werken voor een klein softwarebedrijf dat gespecialiseerd is in de ontwikkeling van integratiesoftware. Jouw werkzaamheden zien er als volgt uit: In een klein team met 4 ontwikkelaars houd jij je bezig met afwisselende

Bekijk vacature »

SQL Database ontwikkelaar

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Fullstack developer

Functie omschrijving We are looking for a dutch native speaker Wil jij werken als Senior Developer en werken aan een applicatie die duizenden marketingcampagnes automatisch aanstuurt? Dit is je kans! Kom werken voor onze opdrachtgever en in deze rol zul je veel vrijheid en verantwoordelijkheid krijgen om gezamenlijk de applicatie naar een hoger plan te tillen. Wat ga je verder doen: Optimaliseren, beheren en uitbreiden van onze applicatie; Het bouwen van aansluitingen op de systemen van partners middels API’s; Meedenken over de technische/ontwikkel-standaarden; Proactief verbeterpunten voorstellen. Bedrijfsprofiel Het is een organisatie die met een team van verschillende developers én marketeers

Bekijk vacature »

Medior Java developer

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 »

Full stack ontwikkelaar Laravel, Vue.js

Functie Als ontwikkelaar binnen deze organisatie hou jij je voornamelijk met lopende projecten voor de verschillende klanten. Zo bouw je de ene dag aan prijsschifting systemen en de andere dag onderzoek je crawlers en stel je ze zo in dat de data goed binnen komt binnen het systeem. Daarnaast bouw je mee aan dashboards en ben je dus constant bezig met het verbeteren van het platform. Er is een vaste werkwijze, zo werken ze met Trello kaarten en onderverdelen ze deze aan het begin van iedere week onder de developers. Dit wordt door de lead developer gedaan, maar in samenspraak

Bekijk vacature »

Junior Software Developer

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer!? Sta jij aan het begin van jouw loopbaan of heb jij misschien al enige ervaring? Vind jij het daarnaast belangrijk om jezelf constant te kunnen ontwikkelen en uitdagen? Lees dan snel verder! Voor een vooraanstaand softwarehuis in Nieuwegein ben ik op zoek naar een Junior Software Developer. De eigenaar van het bedrijf is ervan bewust dat je als junior nog een hoop kan leren, waardoor je de eerste maanden veel begeleiding en diverse trainingen krijgt. Daarna ga je samen met je collega's aan zowel kleine als grote projecten werken.

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

C# Ontwikkelaar

In het kort Als C# .NET Core ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging

Bekijk vacature »

Als PHP developer (Symfony) bijdragen aan betere z

Functie Als Medior/Senior PHP developer wordt er een mate van zelfstandigheid verwacht, maar ook dat je goed in een team kunt opereren waar kennis wordt gedeeld en er bijvoorbeeld codereviews plaatsvinden. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden geactualiseerd.

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

Als Front-end developer samenwerken met de beste c

Functie Momenteel zijn we voor één van de projecten bij hun key partner, een voorloper in de energiesector, op zoek naar gedreven Front-end developers. Ze nemen de lead in dit project en werken uitsluitend met vooruitstrevende technologieën. Ze verwachten dat de technologie die hier wordt ontwikkeld uiteindelijk door veel meer grote corporates, in verschillende sectoren zal worden toegepast. Dit is dan ook een heel uitdagend project om aan mee te gaan werken. Het team bestaat o.a. uit User Experience designers, Data Scientists en Software Engineers. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van

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 »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

06/12/2013 01:55:31
Quote Anchor link
Ola,

Ik heb het idee dat sommige OOP'ers behoorlijk vaak interfaces gebruiken.

Stel je hebt meerdere classes die iets kunnen cachen dan lijkt het me zinvol om een interface toe te passen. Echter er zijn ook classes waarvan je bijv. op voorhand weet dat je er maar 1 van nodig hebt.

Stel ik heb bijv. een Config class waar ik configuratie instellingen in op kan slaan. Ik weet dat ik aan 1 (type) class voldoende heb. Ik zal nooit andere varianten van die class maken. Is de conclusie dan ook dat dergelijke classes geen interface nodig hebben? (je gaat ze namelijk nooit uitwisselen met een andere class)

Ben benieuwd naar de reacties.
 
PHP hulp

PHP hulp

04/01/2025 02:50:14
 
Ward van der Put
Moderator

Ward van der Put

06/12/2013 08:19:09
Quote Anchor link
Ozzie PHP op 06/12/2013 01:55:31:
Stel ik heb bijv. een Config class waar ik configuratie instellingen in op kan slaan. Ik weet dat ik aan 1 (type) class voldoende heb. Ik zal nooit andere varianten van die class maken. Is de conclusie dan ook dat dergelijke classes geen interface nodig hebben?

Zeg nooit "nooit". Je kunt er nu van overtuigd zijn dat je iets "nooit" wilt gaan doen, maar je kunt niet in de toekomst kijken. Misschien wil je straks wel een bundel maken die je framework op een server installeert met een aparte MailConfig en een PhpIniConfig.

Het hele eiereneten is dat je wel een API op papier zet. Het schrijven van de interface dwingt je na te denken over hoe je een klasse op de buitenwereld aansluit.
 
Ozzie PHP

Ozzie PHP

06/12/2013 13:20:22
Quote Anchor link
Dat begrijp ik, maar je hebt soms classes waarvan je weet dat je er geen andere van nodig hebt. Ik zal een PhpIniConfig niet zomaar uitwisselen met de default config bijvoorbeeld. En dan nog moet je je afvragen wat het verschil zou zijn tussen beiden.

Ander voorbeeldje dan. Stel ik heb een class waarin ik paths op sla. Daar heb je er maar eentje van nodig. Moet je daar dan een interface voor maken? Wat ik eigenlijk bedoel te zeggen, is dat je dan voor iedere class een interface zou moeten maken. Iedere class zou dan gekoppeld zijn aan een interface. Lijkt me niet de bedoeling?? Of wel????
 
Ward van der Put
Moderator

Ward van der Put

06/12/2013 13:37:32
Quote Anchor link
Dat is uiteraard niet altijd nodig. Maar "naar een interface toe" schrijven dwingt je wel om na te denken over de API. En dat helpt, zelfs als je later in productie de implements ... gewoon weglaat.

Je kunt wel een duidelijke trend zien. Een toenemend aantal PHP-ontwikkelaars gebruikt dezelfde interfaces, ook al kan de achterliggende implementatie verschillen. Dat geldt bijvoorbeeld voor de Logger Interface en de Cache Interface (twee PSR-projecten) en voor de abstractere SPL-interfaces. Met dergelijke standaarden gaan we een gemeenschappelijk taal gaan gebruiken: zó zou PHP-OOP eruit moeten of kunnen zien.

Dus ja, als je een class schrijft die sterk lijkt op iets dat al bestaat in een PSR- of SPL-interface, dan zou ik de lijn helemaal doortrekken en de complete interface implementeren.
 
Ozzie PHP

Ozzie PHP

06/12/2013 13:48:06
Quote Anchor link
Hmm, oké... maar dus niet nodig om ze altijd te gebruiken. Thanks :)
 
Wouter J

Wouter J

06/12/2013 15:43:30
Quote Anchor link
Een interface is natuurlijk niet altijd nodig. Alleen zodra je gaat typehinten op een object, of zodra je suggereert dat een object een bepaalde method moet hebben, ga je wel over op typehintent op een interface.
 
Ozzie PHP

Ozzie PHP

06/12/2013 17:25:59
Quote Anchor link
>> Alleen zodra je gaat typehinten op een object ...

Oké, maar nu heb ik bijv. een class die paths opslaat. Daar heb ik er maar eentje van. Als ik die class meegeef aan een de constructor van een ander object, dan kan ik gewoon dit doen toch?

public function __construct(Paths $paths);

Dan typehint ik dus op de class en niet op de interface.
 
Ward van der Put
Moderator

Ward van der Put

07/12/2013 09:05:24
Quote Anchor link
Bij de class-typehint func(Foo $foo) zeg je "is een ... of een child van ..."; bij de interface-typehint func(FooInterface $foo) zeg je meer "gedraagt zich als een ...". Als je vervolgens vooral methoden gebruikt, zou ik hier typehinten op een interface.

Typehinten op de interface is beter schaalbaar. Bijvoorbeeld read(FileCache $entry) is een minder flexibele keuze dan read(CacheInterface $entry).
 
Wouter J

Wouter J

07/12/2013 12:52:46
Quote Anchor link
Natuurlijk kan het ozzie, maar of het goed is... Je bent nu volledig gelimiteerd aan alleen dat Paths object, je hebt nu elke vorm van flexibiliteit uitgesloten voor de parameter die je aan de constructor meegeeft.
 
Ozzie PHP

Ozzie PHP

07/12/2013 15:56:26
Quote Anchor link
>> Typehinten op de interface is beter schaalbaar. Bijvoorbeeld read(FileCache $entry) is een minder flexibele keuze dan read(CacheInterface $entry).

Ja, helemaal mee eens. Maar van een cacher weet je dat er meerdere varianten kunnen bestaan (ook al gebruik ik zelf nog maar 1 variant). Maar in dit geval zou ik dus ook voor Cache(r)Interface kiezen.

>> Je bent nu volledig gelimiteerd aan alleen dat Paths object, je hebt nu elke vorm van flexibiliteit uitgesloten voor de parameter die je aan de constructor meegeeft.

Precies, vandaar ook mijn vraag. Normaal gesproken zou je dat niet willen. Maar een Paths object, daarvan weet je dat je er maar 1 zal hebben. Dan heb ik het gevoel dat het overkill is als je dan een interface gaat implementeren. Snap je?
 
Wouter J

Wouter J

07/12/2013 16:16:28
Quote Anchor link
Wie zegt dat je maar 1 Paths object hebt? Een SerializedPaths object, een FrozenPaths object, etc.
 
Ozzie PHP

Ozzie PHP

07/12/2013 16:23:03
Quote Anchor link
Huh, wat bedoel je met serialized paths en frozen paths? :-s
Een path is in mijn systeem gewoon dit "/root/foo/path/" en heeft een ID. Je hebt toch geen andere soorten paden?
 
Wouter J

Wouter J

07/12/2013 16:33:10
Quote Anchor link
Je dat is een Path, en dan heb je dus een Paths object die meerdere Path objecten heeft. Die kan frozen (locked) zijn, of serialized, enz.
 
Ozzie PHP

Ozzie PHP

07/12/2013 16:44:33
Quote Anchor link
Hmmm, oké... mijn Paths object is een verzameling van paden. Ik heb niet voor ieder pad een apart object, maar alle paden zitten gewoon in een class property (array). Als ik een pad nodig heb, dan is het dus heel simpel: echo $paths->get('image');

Ik zou me geen situatie kunnen bedenken waarom ik paden zou willen serializen of het object zou willen locken. Ik denk dus echt dat ik aan 1 Paths object voldoende heb. (In de meeste gevallen zal dat anders zijn en zul je wel een interface nodig hebben inderdaad.)

Wat ik me nog wel afvraag. Stel je hebt een Foo class... nee, wacht, laten we het gewoon een cacher class noemen, en je wil daar een interface voor maken. Stel de cacher class moet o.a. een delete() en een deleteAll() functie hebben, maar je weet dat er meerdere classes zijn die een delete() en deleteAll() functie hebben. Is het dan de bedoeling dat je een cacher interface maakt die dan de "deleteInterface" extendt? Of stop je alle functies die in de cacherInterface thuishoren gewoon in 1 class?
Gewijzigd op 07/12/2013 16:44:45 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

07/12/2013 16:50:24
Quote Anchor link
Nee, je wilt niet dat één cache-gebruiker alle caches (ook die van anderen) kan legen. Je maakt daarom een cache pool die als gemeenschappelijke resource gedeeld kan worden. Via de pool kunnen verschillende objecten dezelfde cache delen.

En dan heb je hier twee interfaces nodig: een voor een cache entry en een voor de cache pool.
 
Ozzie PHP

Ozzie PHP

07/12/2013 16:56:58
Quote Anchor link
Ward, ik snap niet helemaal wat je bedoelt. Met deleteAll() bedoel ik dat de cache wordt verwijderd die bij een specifieke cacher hoort. Bijv. ik heb een LibraryFooCacher. Deze verwijdert dan alleen dingen die bij library Foo horen. Of stel ik heb een WebsiteCacher. Deze verwijdert dan alleen de bestanden die bij een specifieke website horen. DeleteAll verwijdert dus niet alle cache, maar alleen de cache data die aan dat specifieke cache object toebehoort. Stel ik zou een Ward library hebben:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$cacher
= $this->container->get('ward_library_cacher');
$cacher->delete('foo'); // verwijder cache data met ID foo uit de Ward library cache
$cacher->deleteAll();   // verwijder alle cache data uit de Ward library cache
?>
 
Ward van der Put
Moderator

Ward van der Put

07/12/2013 17:20:18
Quote Anchor link
Dat een specifieke cache bij een specifieke site hoort, is een heel duidelijke keuze: je koppelt hier een bepaalde cache uit de cache pool volgens bepaalde regels aan iets anders. Je maakt de inrichting van de cache al redelijk specifiek.

Objecten in de cache zijn in jouw opzet gerelateerd aan websites, hoewel er véél méér cacherelaties mogelijk zijn.

Ik zeg niet dat die keuze verkeerd is. Ik constateer slechts dat die keuze er is.

Als je al zó ver gevorderd bent, met zo veel doorslaggevende keuzen, zou ik inderdaad gericht typehinten op een class die een sleutelrol in het framework speelt. Maar meer in het algemeen zou ik liever typehinten op een interface.
 
Ozzie PHP

Ozzie PHP

07/12/2013 17:27:12
Quote Anchor link
>> Objecten in de cache zijn in jouw opzet gerelateerd aan websites, hoewel er véél méér cacherelaties mogelijk zijn.

Nee, niet altijd. Kan dus ook aan een library zijn gekoppeld.

>> Als je al zó ver gevorderd bent, met zo veel doorslaggevende keuzen, zou ik inderdaad gericht typehinten op een class die een sleutelrol in het framework speelt. Maar meer in het algemeen zou ik liever typehinten op een interface.

Voor een cacher zou ik dus ook typehinten op een interface. Maar wat zou jij doen met (bijv.) een paths class (zoals 2 berichten hierboven beschreven)?
 
Ward van der Put
Moderator

Ward van der Put

07/12/2013 17:36:04
Quote Anchor link
Laten we het dan eens sterk vereenvoudigen. In het ene pad moet je \ gebruiken en in het andere pad /. Je wilt daarom typehinten op een interface die paden snapt, niet op een specifieke class die paden implementeert.
 
Ozzie PHP

Ozzie PHP

07/12/2013 18:07:59
Quote Anchor link
Ward, ik begrijp helemaal niet wat je bedoelt met:

"In het ene pad moet je \ gebruiken en in het andere pad /"

"Je wilt daarom typehinten op een interface die paden snapt"

Kun je dit eens nader toelichten? Er gaat bij mij nog geen lampje branden, maar wie weet met jouw uitleg?
 
- Raoul -

- Raoul -

07/12/2013 18:55:00
Quote Anchor link
Windows gebruikt \, linux/ OSX gebruiken / bij paden
Maar PHP heeft al native checks ingebouwd om het juiste slashteken te gebruiken dus ik snap niet echt waarom Ward hier een interface voor wilt implementeren.
 

Pagina: 1 2 volgende »



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.