[OO] Resolver classen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior/senior Fullstack developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Roosendaal, ontwikkel je als PHP Developer niet alleen webapplicaties, maar ben je verder ook gefocust op het continu inspelen op nieuwe trends en ontwikkelingen m.b.t software development. Naast het bouwen van webapplicaties, ontwikkelen zij ook webshops en websites voor gave opdrachtgevers! Wat ga je doen? Het schrijven van schone en efficiënte codes volgens het Symfony framework; Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het Symfony framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de

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 »

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 »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

Senior Cobol Applicatieontwikkelaar

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving In de applicatie ETM

Bekijk vacature »

C# Developer

Dit ga je doen Je gaat aan de slag in het websites team of portals team waarin je je bezighoudt met concept & design, implementatie en ook een stukje bugfixing en onderhoud; Je werkt met je team volgens de Scrum werkwijze; Zo adviseer je ook de PO & Scrum Master over de technische architectuur, koppelingen en integratie met externe systemen en API’s; Je blijft op de hoogte van de laatste ontwikkelingen en trends op het gebied van C# / .NET en deelt deze kennis binnen de organisatie. Hier ga je werken Onze klant is een internationale organisatie gevestigd in de

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Lead developer

Functie Als Lead developer wordt jij onderdeel van een multidisciplinair team van circa 23 software engineers. Als team werken jullie agile en zijn termen als Continuous Integration en Continuous Delivery dagelijkse koek. Jullie werken aan uitdagende en afwisselende projecten met als doel klanten een totaal oplossing aan te kunnen bieden. Jij wordt verantwoordelijk voor complete projecten waarbij jij als verantwoordelijke zorgt dat het project op de juiste manier blijft draaien. Zo haal jij ook de requirements op bij de klant en kijk jij samen met het team en met de salesafdeling hoeveel uren hiervoor nodig zijn. Daarnaast stuur jij jouw

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 »

Freelance JAVA / C# Developer

Functieomschrijving 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! Voor een opdrachtgever in omgeving Delft zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. 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

Bekijk vacature »

(Lead) PHP Software Developer

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een PHP software developer met een aantal jaar werkervaring. Je krijgt een plek in een klein team met 2 andere software developers. Wil jij graag werken met de nieuwste technieken bij een bedrijf waar jij de lead gaat nemen in de verder ontwikkeling en modernisering van een eigen software pakket? Dan ben je hier aan het juiste adres! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "in-house" ontwikkelde multimedia platform. Je neemt de lead in

Bekijk vacature »

Back end Node.js developer

Functie Het ontwikkelteam bestaat momenteel uit 5 (back-end) Developers, 2 systeembeheerders, 1 DevOps engineer, 1 Tech Lead en 2 Scrum Masters. Samen wordt er doorontwikkeld aan twee SaaS-platformen die in een hoog tempo doorontwikkeld moeten worden. Omdat innovatie een belangrijk speerpunt binnen de organisatie is, wordt er ook continu naar snellere en slimmere oplossingen te bedenken en realiseren. Als Back-end Developer hou jij je dagelijks bezig met vraagstukken zoals: API-development, high volume datastromen, het ontwikkelen van Bots aan de hand van A.I. Daarnaast denk en werk jij mee aan de onlineapplicaties voor klanten. Er wordt zelfstandig en in teamverband gewerkt

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

09/01/2025 20:01:02
 
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.