[OO] Resolver classen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET developer voor innovatieve applicaties gez

Bedrijfsomschrijving Deze werkgever houdt zich al ruim 20 jaar bezig met het ontwikkelen van innovatieve software en dat willen ze graag nog lang doorzetten. En dat merk je ook als je als .NET developer hier aan de slag gaat. De applicaties worden continu doorontwikkeld met altijd als uitgangspunt dat zowel de kwaliteit als het gebruikersgemak van hoog niveau is. Het bedrijf telt inmiddels ruim 25 medewerkers waarvan meer dan de helft op de development afdeling werken. Meer weten over deze werkgever? Mail naar [email protected] of bel 0657578548 Functieomschrijving Je komt te werken in een Scrum team met andere .NET developers

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

3D BIM Add-on Developer

Als 3D BIM add- on ontwikkelaar bij KUBUS ontwikkel je add-ons (BCF Managers genaamd) voor de toonaangevende building information modeling (BIM) programma's Revit, Navisworks, Archicad, AutoCAD en Tekla Structures. BCF Managers maken gegevensoverdracht mogelijk tussen BIM-software en BIMcollab. Je werkt zowel aan de front- als aan de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en

Bekijk vacature »

Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Front end developer Zorgplatform

Functie Jij als Front end ontwikkelen zult komen te werken samen met 1 PHP ontwikkelaar, 1 Python developer en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De Marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult als Front ender dus voornamelijk bezig zijn met het verbeteren van onze interfaces op onze verschillende producten. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere

Bekijk vacature »

Front end developer

Functie Qua type opdrachten is er echt een verscheidenheid aan afnemers, zo werken ze met grote multinationals, maar ook met startups. Zo kom je te werken in een gevarieerde omgeving en kan je ook schakelen tussen verschillende culturen. De projecten variëren van greenfield projecten tot langdurige ontwikkeltrajecten. Hier wordt alleen maar gewerkt met aan front end projecten. Daarom maakt het onze partner niet uit waar jij kennis van hebt, als je maar gedegen kennis hebt van Javascript frameworks, Unit testing en ook bekend bent met de scrum methodiek. Eisen Minimaal 4 jaar relevante werkervaring Kennen en ervaring van Javascript frameworks

Bekijk vacature »

Implementatie specialist

Standplaats: Honselersdijk Aantal uren: 32 – 40 uur Opleidingsniveau: HBO werk- en denkniveau Ben jij de implementatie expert die onze klanten helpt bij het integreren van de Greencommerce software? Ben jij daarnaast communicatief sterk, denk jij graag in verbeteringen en heb je ervaring met ICT? Lees dan snel verder! Bedrijfsinformatie Jem-id is een grote speler op het gebied van software ontwikkeling. Zo zijn wij continu bezig met het ontwikkelen van de meest innovatieve software voor de AGF- en sierteeltsector. We creëren oplossingen die er toe doen en verbinden klanten niet alleen op technisch vlak, maar zoeken ook de verbinding in

Bekijk vacature »

Software Developer

Functie omschrijving Psst hé jij daar! Op zoek naar een nieuwe uitdaging als developer? Wacht niet langer en reageer direct. In deze functie ga je bij een familiebedrijf werken als developer. Je gaat maatwerk software ontwikkelen met de Microsoft stack. Je gebruikt technieken als C#, ASP.NET en MVC. Je werkt in een leuk team van andere developers. Je krijgt veel vrijheid in je werk en kan flexibel werken. Dagje thuiswerken? Geen probleem! Daarnaast is er veel ruimte om écht mee te denken met het bedrijf en met de klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Vanaf

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 »

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

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 Ridderkerk 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 »

Java Developer

Dit ga je doen Het ontwikkelen van nieuwe software; Het ombouwen van de bestaande software; Zowel back- als front-end software ontwikkelen; Het testen; Het implementeren van de volledig geteste software; Het verzorgen van nazorg en het oplossen van bugs; Het opstellen en bijhouden van procesdocumentatie; Je draagt bij aan het agile/scrum processen van het team. Hier ga je werken Ongetwijfeld heb je een of meerdere producten van deze organisatie in huis. Het proces erachter, daar ben je ongetwijfeld minder bekend mee. Deze opdracht geeft je de kans meer over dit proces te weten te komen en een mooie bijdrage te

Bekijk vacature »
- Raoul -

- Raoul -

09/02/2013 11:16:23
Quote Anchor link
Hoi,

Op aanraden van Wouter heb ik een aparte klasse gemaakt voor het parsen van Controller strings als "Application::HelloController::index".

Ik heb nu volgende code:
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
<?php

namespace Symply\Mvc\Controller;

class ControllerResolver
{
    public function resolve($name)
    {

        $parts = explode('::', $name);
        
        if(count($parts) != 3)
        {

            throw new Exception\InvalidControllerException(sprintf(
                'Controller string %s is invalid',
                $name
            ));
        }

        
        $class = '\\' . ucfirst($parts[0]) . '\\Controller\\' . ucfirst($parts[1]);
        
        return array(
            'controller' => new $class,
            'action'     => lcfirst($parts[2]) . 'Action',
        );
    }
}


?>


Maar ik had graag gehad dat ControllerResolver de Resolvable class implements waardoor de resolve() method verplicht gesteld word.
Zo zou het dan eruit zien:
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
<?php

interface Resolvable
{
   public function resolve($name);
}


class ControllerResolver implements Resolvable
{
    public function resolve($name)
    {

        $parts = explode('::', $name);
        
        if(count($parts) != 3)
        {

            throw new Exception\InvalidControllerException(sprintf(
                'Controller string %s is invalid',
                $name
            ));
        }

        
        $class = '\\' . ucfirst($parts[0]) . '\\Controller\\' . ucfirst($parts[1]);
        
        return array(
            'controller' => new $class,
            'action'     => lcfirst($parts[2]) . 'Action',
        );
    }
}


?>


Nu mijn vraag: waar gaat zo'n resolvable class? Ik wil er geen nieuw component voor maken. En die class in de \Symply\Mvc\Controller namespace zetten heb ik liever ook niet want ik wil zo'n Resolvable ook voor andere dingen gebruiken ipv enkel controllers parsen.

Iemand een idee?

Raoul
Gewijzigd op 09/02/2013 11:19:27 door - Raoul -
 
PHP hulp

PHP hulp

28/11/2024 08:49:32
 
Wouter J

Wouter J

09/02/2013 11:57:02
Quote Anchor link
Resolvable class? En allereerst, een class? Waarom niet gewoon een ResolveInterface interface?

En je moet je ook afvragen of je wel alle resolvers op 1 hoop moet gooien. Symfony2 heeft bijv. een aparte ControllerResolverInterface en een ResourceResolverInterface ect.

Nog wat andere tips:
- maak je exception message duidelijker. Je weet nu totaal niet wat er precies verkeerd is, maak hem bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if(count($parts) != 3) {
    throw new Exception\InvalidControllerException(sprintf(
        'Controller string "%s" is invalid, a controller string should at least have 3 parts separted with "::", %d parts given',
        $name,
        count($parts)
    ));
}

?>

- Nog mooier is het als je je exception klasse wat aanpast:
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
<?php
class InvalidControllerStringException
{
    public function __construct($string, $message = null, $code = 0, \Exception $previous = null)
    {

        parent::__construct(
            sprintf(
                'Controller string "%s" is invalid%s',
                $string,
                (
null === $message ? ', '.$message : null)
            ),

            $code,
            $previous
        );
    }
}


// in gebruik
if(count($parts) != 3) {
    throw new Exception\InvalidControllerException(
        $name,
        sprintf(
            'a controller string should at least have 3 parts separted with "::", %d parts given',
            count($parts)
        )
    );
}

?>

- een resolver heeft als taak het omzetten van een 'humanized' string in een string die de computer begrijpt, hij moet niet opeens al klassen gaan aanmaken
- je bent zo'n PSR fan en toch gebruik je de standaards niet in je code...?
 
- Raoul -

- Raoul -

09/02/2013 12:32:10
Quote Anchor link
Wouter, bedankt voor je reactie.
Quote:
- een resolver heeft als taak het omzetten van een 'humanized' string in een string die de computer begrijpt, hij moet niet opeens al klassen gaan aanmaken

Inderdaad, ik pas het zo aan.

Quote:
- je bent zo'n PSR fan en toch gebruik je de standaards niet in je code...?

Waar kom ik ze dan niet na?

Quote:
Resolvable class? En allereerst, een class? Waarom niet gewoon een ResolveInterface interface?

En je moet je ook afvragen of je wel alle resolvers op 1 hoop moet gooien. Symfony2 heeft bijv. een aparte ControllerResolverInterface en een ResourceResolverInterface ect.

Je hebt gelijk. Ik las dit in de documentatie van de Symfony API

Quote:
public mixed|Boolean getController(Request $request)

Returns the Controller instance associated with a Request.


Ze returnen een Controller instance in een Resolver, dat mocht toch niet?

Raoul
 
Wouter J

Wouter J

09/02/2013 12:37:05
Quote Anchor link
Quote:
Waar kom ik ze dan niet na?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (...)
{
}

?>

moet zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if (...) {
}

?>


Haal je project anders eens door de PHP CS Fixer met de optie '--level=all' en kijk eens wat er allemaal veranderd wordt.

Quote:
Ze returnen een Controller instance in een Resolver, dat mocht toch niet?

Je moet zelf weten wat mag en niet mag. Ik zou het zelf nooit doen.

Edit:
Of tja, nu ik er over na denk. Een ControllerStringParser zou alleen een string mogen parsen en niks meer, een ControllerResolver is natuurlijk weer een stapje verder en zou dus wel een controller mogen aanmaken.
Gewijzigd op 09/02/2013 12:38:10 door Wouter J
 
- Raoul -

- Raoul -

09/02/2013 12:42:27
Quote Anchor link
Ah ok.
Zou een ControllerResolver dan ook gebruik mogen maken van een ControllerStringParser of is dat dan weer overkill?

Ik lees het nu net ook, dat if/foreach/for/while/switch statements zo moeten gedaan worden. Denk dat ik het verwarde aangezien bijna alle {} ge-entered worden (classes, functies).
Gewijzigd op 09/02/2013 12:51:15 door - Raoul -
 
Wouter J

Wouter J

09/02/2013 13:20:45
Quote Anchor link
Quote:
Zou een ControllerResolver dan ook gebruik mogen maken van een ControllerStringParser of is dat dan weer overkill?

Ik zou me dan houden aan het KISS principe en gewoon alleen een resolver gebruiken.
 
- Raoul -

- Raoul -

09/02/2013 13:33:57
Quote Anchor link
Dankjewel.
 



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.