router

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Java Developer / DevOps / Cloud / Financi&e

Functieomschrijving Wil jij graag aan de slag als Java Developer? Heb jij affiniteit met de financiële branche? Wil jij systemen ontwikkelen die een grote impact hebben en binnen de gehele organisatie gebruikt worden? Solliciteer dan nu! Als Developer ben je primair verantwoordelijk voor het ontwerpen, bouwen en testen van software in al zijn facetten: Het designen en developen/ontwikkelen in Java van nieuwe software en nieuwe features op bestaande functionaliteiten; Het reviewen en overzien van de geschreven code; Het continu verbeteren van de richtlijnen en standaarden voor het geleverde werk binnen het team; Het bijdragen aan het verder automatiseren van de

Bekijk vacature »

ABAP Developer

Functieomschrijving Heb jij de nodige ervaring met ABAP en ben jij toe aan een nieuwe uitdaging? Werk je graag in een internationaal bedrijf met een informele sfeer en flexibiliteit? Dan is deze vacature iets voor jou! Je richt je op SAP development werkzaamheden die voort komen uit optimalisatie-, migratie-, integratie- en innovatie trajecten; Je werkt met o.a. ABAP Eclipse, OOP, Webservices en HANA; Je hebt nauw contact met de functionele SAP specialisten om de wensen helder te krijgen waarna je dit vertaalt naar de technische oplossing; Je werkt in een Agile / Scrum werkomgeving; Je adviseert de organisatie op jouw

Bekijk vacature »

Business Developer / English

Discipline Marketing & Sales Location Utrecht (NL) Hours a week 40 You must love sales! Because YOU will make it your goal to successfully promote and expand our B2B drop shipment program. You will make this a success because you are commercially driven and convinced of online B2B sales. We trust you to work independently. You have an enthusiastic international team that can get you up to speed. What you will do Generates new business by attracting new partners to the vidaXL B2B Drop-shipping Platform, focusing on the English speaking markets; Analyzes the market and identifies suitable partners; Communicates with

Bekijk vacature »

Java Developer Internationaal complexe calculaties

Functieomschrijving Kom jij het best tot je recht in een creatieve omgeving en heb jij een pragmatisch instelling? Denk jij graag vijf stappen vooruit en neem je andere daarin mee? Dan pas je zeker bij dit bedrijf. Lees dus snel verder. Ontwikkelen van applicaties en nieuwe functionaliteiten in Java; Aanpassingen maken in bestaande code; Overleggen en samenwerken met architecten en Product Owners; Werken binnen een multidisciplinair Scrumteam met betrekking tot analyse, design en ontwikkeling; Samenwerken en ondersteunen van testers in het proces van automatische regressietesten. Functie-eisen Je hebt minimaal een afgeronde HBO of WO opleiding in de richting van de

Bekijk vacature »

Java Developer / Webservices / Overheid

Functieomschrijving Ben jij als Java Ontwikkelaar toe aan een stabiele organisatie zonder commercieel doeleinde? Ga jij voor kwaliteit, collegialiteit en stabiliteit? Dan is dit jouw baan! Ontwikkelen van nieuwe en bestaande webservices; Uitbreiden van functionaliteiten binnen de producten- en dienstenportefeuille; Als het in jouw interessegebied ligt kan je betrokken worden bij het vormgeven van verantwoordingsrapportages; Werken aan gegevensuitwisseling met SOAP, ervaring hierin met Apache Synapse/Axis2 is een pre; Werken aan Java web GUI ontwikkeling, ervaring hierin met GWT, Bootstrap, Javascript, HTML en CSS is een pre; Werken met testframeworks, ervaring hierin met JUnit en Selenium is een pre; Ervaring met

Bekijk vacature »

Full stack software .NET C# developer, domotica me

Voor een bedrijf in de regio Hendrik Ido Ambacht zijn we op zoek naar een fullstack .NET C#developer. Het gaat hier om een bedrijf dat systemen ontwikkeld die via domotica oplossing bieden voor maatschappelijke instellingen. Zo verwerken hun systemen meldingen waarover ze rapporteren, maar ook zorgen ze voor de automatisering van toezicht. Het systeem bestaat uit apps, web interfaces, backend en BI rapportage tools. Het gaat het hier om een MKB bedrijf van circa 70 mensen met een team van 5 developers. Bestaande uit hardware, embedded en backend developers. Momenteel is er daarom sterke behoefte aan iemand die zowel back-

Bekijk vacature »

Software Developer / Maatwerk / 4GL / SQL

Functieomschrijving Heb jij ervaring met Software Development en wil je je graag verder ontwikkelen bij een internationaal bedrijf in regio Eindhoven? Lees dan snel verder! Software ontwikkeling met technieken als Magic XPA en DB2 relationele databases. Ontwikkelen van nieuwe onderdelen van het centrale (maatwerk) softwarepakket. Uitbreiden bestaande functies binnen het pakket. Wensen en eisen van gebruikers in kaart brengen. Meedraaien in projecten. Informatieanalyses maken en uitwerken. Jezelf ontwikkelen binnen de organisatie, bijvoorbeeld op het gebied van BI of integratie met behulp van SAP PI/PO. Ondersteunen van de helpdesk bij software issues. Functie-eisen 1 tot 3 jaar ervaring op het gebied

Bekijk vacature »

Senior iOS Developer vacature

Je bent innovatief. Je bent creatief. Jij gaat voor een topbaan. Mobile apps ontwerpen, uitwerken en realiseren, dat is jouw passie! Met grote toewijding richt jij je dan ook op een app waarmee consumenten met een gezichtsscan betalen. Of je stort je je op een app die de temperatuur in huis op afstand kan regelen. Het spreekt voor zich dat jouw apps top of the bill zijn als het gaat om gebruiksvriendelijkheid en veiligheid. Ze hebben impact. Je voelt je als een vis in het water in een iOS-omgeving maar, veelzijdig als je bent, kun je ook met andere platforms

Bekijk vacature »

Traineeship Pega Developer De Mandemakers Groep &a

Heb je een ICT gerelateerde HBO/ WO opleiding afgerond, interesse in Business Process Management, vind je persoonlijke ontwikkeling belangrijk en wil je deel uitmaken van een ambitieus familiebedrijf? Dan is het Traineeship tot Pega Developer van De Mandemakers Groep (DMG) en BPM Company iets voor jou! Met een opleidingsprogramma en begeleiding op maat –zowel vanuit De Mandemakers Groep als BPM Company- zorgen we ervoor dat jij je optimaal kan ontwikkelen. De eerste 2 maanden ben je bezig met het behalen van je Pega certificeringen (Certified System Architect (CSA) en Certified Senior System Architect (CSSA)). Hierin zal je door BPM Company

Bekijk vacature »

Junior .NET developer (Fullstack)

Functieomschrijving Onze klant is op zoek naar een (redelijk) beginnend .NET ontwikkelaar die het bestaande ERP pakket wil onderhouden, en uitbreiden met nieuwe functionaliteiten die van scratch af aan gebouwd worden. Er is een meer senior collega aanwezig om je in te werken maar er wordt ook zelfstandigheid van je verwacht. Het pakket wordt internationaal gebruikt en bij de frontend wordt gebruik gemaakt van Angular, Typescript, HTML en CSS. Aan de backend werkt men met C#, ASP.NET Core en Entity Framwework. Heb jij recentelijk je HBO Informatica afgerond en ben je op zoek naar een .NET developer positie waar je

Bekijk vacature »

Senior Java Developer vacature

Jij volgt ontwikkelingen op de voet. Sterker nog: jij bent er onderdeel van. Jij loopt voorop. Jij denkt met klanten mee en helpt hen innoveren. Zo kun jij een bijdrage leveren aan de Rabobank-app, de beveiliging van treinen voor Pro-rail verbeteren of de website van ING een boost geven. Vergaderen? Liever gewoon zorgen dat het werkt! Hoe omschrijft men een Sogetist? Gedreven, resultaatgericht en niet snel tevreden. Wat niet wil zeggen dat je nooit met hem of haar kunt lachen. Integendeel. Plezier hoort wat ons betreft net zo goed bij werken. Maar we gaan op de eerste plaats voor de

Bekijk vacature »

Datawarehouse ontwikkelaar

Ben jij op zoek naar een baan als Datawarehouse Ontwikkelaar waarin je echt het verschil kan maken? Wil je daarnaast een bijdrage leveren aan de realisatie van de data gedreven Hypotheken organisatie? Ben jij creatief en wil je je graag verder ontwikkelen op het gebied van datawarehousing? Dan is de functie van Datawarehouse Ontwikkelaar misschien iets voor jou! Bedrijfsomschrijving Onze klant is de grootste onafhankelijke third party servicer van Nederland voor hypotheken en consumptief krediet. Zij begeleiden met trots het beheer van hypotheken en consumptief krediet voor gerenommeerde nationale en internationale financiële organisaties met uiteenlopende signatuur. Voor deze organisaties zijn

Bekijk vacature »

.NET Developer

.NET Developer De uitgebreide versie Jij hebt ruim twee jaar ervaring als developer. Nu wil je graag je tanden zetten in nog complexere projecten. Samen met je team bereik je nieuwe hoogtes en zelfstandig maak je meters. Je hebt behoefte aan collegae die jou alles leren op het gebied van technologie maar wilt tegelijkertijd ook graag je eigen opgedane kennis delen. Alles wat vandaag nog onbekend is, moet je morgen toepassen in de volgende uitdaging en dàt is wat jou scherp houdt. Je hebt geen zin in een 60-urige werkweek maar haalt wel plezier uit zo nu en dan een

Bekijk vacature »

Java Developer Nieuwbouw Internationaal

Functieomschrijving Ben jij een ervaren Java Developer, of ben jij sinds kortgeleden in de wereld van Java gestapt, en wil jij met jouw kennis van Java een bijdrage leveren aan de core systemen van deze internationale organisatie? Lees dan snel verder! Ontwikkelen van applicaties en nieuwe functionaliteiten in Java; Aanpassingen maken in bestaande code; Overleggen en samenwerken met architecten en Product Owners; Werken binnen een multidisciplinair Scrumteam met betrekking tot analyse, design en ontwikkeling; Samenwerken en ondersteunen van testers in het proces van automatische regressietesten. Functie-eisen Je bent in het bezit van een hbo-diploma; Minimaal twee jaar relevante werkervaring; Je

Bekijk vacature »

Senior Front-end Developer vacature

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Ben jij de Front-end Developer die we zoeken? Je bent creatief, thuis in gebruikersinteractie en een gedreven engineer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Wat doe je als Developer? Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als binnen het Center of Excellence van Sogeti. Jij houdt van het uitdenken en

Bekijk vacature »
Ozzie PHP

Ozzie PHP

20/03/2012 14:34:59
Quote Anchor link
Hallo iedereen,

Ik ga binnenkort beginnen met misschien wel het belangrijkste onderdeel van mijn CMS, namelijk de router.

De route vertaalt een route naar een controller (class) en een action.

(Voor de mensen die niet precies weten wat ik bedoel met een route, een route is het deel dat achter de domein root staat. In www.mijnsite.nl/berichten/toon/1 is 'berichten/toon/1' de route.

Graag wil ik jullie advies/ tips over hoe ik het beste mijn routes kan opbouwen.

Grofweg zijn er 2 mogelijkheden:

1) iedere route heeft een vaste structuur, waarbij deel 1 bijvoorbeeld de controller is en deel 2 de actie. Bijvoorbeeld: www.mijnsite.nl/berichten/toon/1 zou de controller (class) 'berichten' aanroepen en de action (functie) 'toon' en parameter 1.

2) alles is mogelijk, een route heeft geen vaste structuur. Bijvoorbeeld: www.mijnsite.nl/een/hele/ingewikkelde/route/toont/nummer/1/bericht

MIJN PERSOONLIJKE MENING:
- optie 1 is makkelijker te maken, maar minder flexibel
- optie 2 is (veel?) moeilijker te maken, maar je kunt er veel meer mee.

Ik neig er dus naar om voor de 2e optie te kiezen. Maar ik heb geen idee wat ik me op de hals haal. Is zoiets moeilijk om te maken? En is het niet een al te zwaar proces om de juiste controller en action te achterhalen wat ten nadele zal zijn van de performance van de website?

Ik hoop dat iemand (uit ervaring wellicht) advies kan geven. Ook zou ik enorm blij zijn als iemand toevallig een codevoorbeeld / link heeft van optie 2.

Alvast hartelijk dank!
 
PHP hulp

PHP hulp

26/01/2020 10:11:50
 
Wouter J

Wouter J

20/03/2012 15:02:06
Quote Anchor link
Ik heb zoiets pas gemaakt voor mijn collectie van dingen in een framework. Ik heb hierbij alle routes apart in een route object gedaan. In het route object ik ik van de gegevens een REGEX string gemaakt en die kun je dan zo gebruiken.

Mijn codevoorbeeld:
- Route object
- De FrontController waarin bij de dispatch method wordt gekeken welke route matched
- Routes object (deze wordt gebruikt door de frontcontroller)
- Een voorbeeld van mijn routes.ini files

Edit:
Of een voorbeeld uit het framework wat Pim ooit eens heeft gemaakt: https://github.com/drumstok/Small-but-Beautiful/blob/master/SBB.php#L326
Gewijzigd op 20/03/2012 15:21:47 door Wouter J
 
Ozzie PHP

Ozzie PHP

20/03/2012 15:21:25
Quote Anchor link
Thanks Wouter... ik snap er alleen totaal niets van :) Het is nogal een persoonlijke manier denk ik waarop jij het gedaan hebt.

Hmmm.... ik wacht nog even wat meer reacties af.
 
Pim -

Pim -

20/03/2012 17:48:41
Quote Anchor link
Opzich is dat dynamische systeem helemaal niet moeilijk, niet als je met een gewone 'statische' app werkt. Wanneer je dit in een 'dynamisch' systeem wilt verwerken wordt het natuurlijk lastiger.

Als ik zelf iets dergelijks zou willen maken, zou ik het denk ik als volgt doen:

Je hebt een node-structuur, zoals een bestandsmap, zeg: / of /blog
Hierbinnen kan je gewoon pagina's plaatsen, zoals /blog/about
Je kan ook met 'engines' werken, die zelf een dynamische url mappen naar dynamische pagina's, zoals: /:year/:month/:slug (a la wordpress).
Deze engines kan je dan in de node structuur plaatsen, waardoor je krijgt:
/blog/:year/:month/:slug
Hierdoor heb je een mooi modulair systeem: de blog-engine is onafhankelijk van de rest, maar kunnen de engines zelf wel volledig flexibel zijn.

Je kan dan ook nog aparte elementen in een engine (zeg de frontpage van je blog-engine) aparte paden geven, bijv. /. Zo kan je de frontpage van je blog als frontpage van je site nemen.

Misschien wat lastig te implementeren (denk bijv. aan 2 blogs op 2 locaties), maar wel leuk en ik denk dat het wel te doen is.

Succes ;)

Toevoeging op 20/03/2012 17:51:44:

Je moet dan ook proberen de url-mapping enigszins overeen te laten komen met de menu-structuur, dat is misschien wel wat ingewikkeld, al kan je natuurlijk ook die systemen los van elkaar houden.

Hou er trouwens rekening mee dat je naast een url-matcher ook een url-generator moet maken, begin daar niet achteraf aan.

Toevoeging op 20/03/2012 17:54:54:

Het is dan natuurlijk helemaal cool wanneer je de node structuur die aan het hoofd van je routing staat ook de structuur geeft van een engine, dan heb je een kleine core en veel code in plugins, wat sowieso leuk is :)
 
Ozzie PHP

Ozzie PHP

20/03/2012 19:02:30
Quote Anchor link
"Het is dan natuurlijk helemaal cool wanneer je de node structuur die aan het hoofd van je routing staat ook de structuur geeft van een engine, dan heb je een kleine core en veel code in plugins"

Pim, ik waardeer je enthousiasme maar ik als niet-(opgeleid)programmeur snap maar weinig van wat je zegt. Node structuur, enginee... pfff....

Wat ik feitelijk gewoon wil is een action en controller aan een route kunnen koppelen. Stel je hebt een webshop dan zouden dit wat routes kunnen zijn:

- /winkelmandje (controller: shoppingbasket, action index)
-/klant/particulier/inschrijven (controller: register action: consumer)

Die routes wil ik koppelen aan een action en controller. Hoe precies weet ik nog niet, maar bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$routes
= array();
$routes[] = array('route' => 'winkelmandje', 'controller' => 'shoppingbasket', 'action' => 'index');
$routes[] = array('route' => 'klant/particulier/inschrijven', 'controller' => 'register', 'action' => 'consumer');
?>


So far, so good...

Maar wat ik dus wil weten is... is hoe je deze url:

www.mijnwebshopje.nl/winkelmandje

vertaalt naar de controller 'shoppingbasket' en de action 'index'.

Hoe maak je zo'n router? En zoals ik in de beginpost al zei, je kunt een eenvoudige router maken waarbij het 1e deel van je route overenkomt met de controller en het 2e deel met de action. Maar ik wil het graag wat flexibeler... mits dit niet al te ingewikkeld is...
 
Wouter J

Wouter J

20/03/2012 20:23:27
Quote Anchor link
Dat wat je nu wilt is toch nog niet heel moeilijk te maken?

Eerst doe je het heel simpel en maak je niks dynamisch:
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
<?php
// routes.php
$routes = array();
$routes[] = array('route' => 'winkelmandje', 'controller' => 'shoppingbasket', 'action' => 'index');
$routes[] = array('route' => 'klant/particulier/inschrijven', 'controller' => 'register', 'action' => 'consumer');

// front controller
foreach( $routes as $route )
{

  if( $route['route'] == 'winkelmandje' )
  {

    echo ucfirst($route['controller']).'::'.strtolower($route['action']).'()';
    break;
  }
}

?>


Vervolgens ga je het uitbreiden en voeg je er een dynamische url aan toe, ong. zoiets:
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
<?php
// routes.php
$routes = array();
$routes[] = array('route' => 'winkelmandje', 'controller' => 'shoppingbasket', 'action' => 'index');
$routes[] = array('route' => 'klant/particulier/inschrijven', 'controller' => 'register', 'action' => 'consumer');

// front controller
$url = $_SERVER['REQUEST_URI'];

$url = end(preg_split('/ozzie-router\.php\//', $url));

foreach( $routes as $route )
{

  if( $route['route'] == $url )
  {

    // i.p.v. een echo moet je natuurlijk wat doen met de controller en action gegevens
    echo ucfirst($route['controller']).'::'.strtolower($route['action']).'()';
    break;
  }
}

?>


Dit is nog relatief simpel. Nu hoef je alleen nog het probleem van parameters die in de url zitten en in de action parameters thuis horen voor elkaar te krijgen en dan zul je REGEX nodig hebben.
Doe het wel zo dat je in de routes.php moet aangeven waar je de parameters wilt, en misschien zelfs wel met voorwaardes of het cijfers of letters moet bevatten.
 
Ozzie PHP

Ozzie PHP

20/03/2012 20:37:07
Quote Anchor link
Dankjewel voor het meedenken Wouter. Dit zou inderdaad een 1e stap kunnen zijn. De moeilijkheid ligt voor mij vooral in de vraag hoe ik moet matchen.

Dankzij jouw codevoorbeeldje wordt het overigens wel wat duidelijker :) Ik had het idee dat ik de complete route zou moeten opsplitsen in deeltjes en die deeltjes dan met elkaar zou moeten vergelijken, maar nu ik het zo zie is dat wellicht helemaal niet nodig, maar moet ik inderdaad gaan preg_matchen... waar ik waars. tzt wel weer wat hulp bij nodig heb :)

P.S. ligt het aan mij of ontvang ik ineens geen mailtjes meer als er iemand gereageerd heeft in een van mijn topics?
 
Wouter J

Wouter J

20/03/2012 20:38:46
Quote Anchor link
Quote:
P.S. ligt het aan mij of ontvang ik ineens geen mailtjes meer als er iemand gereageerd heeft in een van mijn topics?

Nee, dat ligt niet aan jou
 
Pim -

Pim -

21/03/2012 09:52:57
Quote Anchor link
Sorry, ik vind het gewoon leuk even te fantaseren.

Opzich is het conceptueel niet zo lastig hoor. Een node structuur is niets anders dan een boom of 'composite' pattern. Op internet zijn genoeg manieren te vinden hoe je dat met een db implementeerd.

Dat wat ik een engine noemde (term komt uit eoa cms waar ik ooit naar gekeken heb) is gewoon een soort module, een eigen mvc systeempje met routes, views en een of meerdere tabellen.

Hoe je dit daadwerkelijk uitschrijft, tsja... ;-)
 
Ozzie PHP

Ozzie PHP

21/03/2012 10:02:41
Quote Anchor link
Kijk dat instellen van een route dat gaat wel lukken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$routes
= array();
$routes[] = array('route' => 'winkelmandje', 'controller' => 'shoppingbasket', 'action' => 'index');
?>


Maar mijn vraag is, hoe herleid ik de onderstaande url dan weer naar de juiste action en controller:

www.mijnwebshop.nl/winkelmandje

Of anders gezegd, hoe match ik de url "winkelmandje" met de route "winkelmandje". Oké... in dit geval is het eenvoudig, maar wat als we het een beetje gecompliceerder maken. Stel we hebben 2 routes:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$routes
= array();
$routes[] = array('route' => 'product/$product_id', 'controller' => 'products', 'action' => 'show');
$routes[] = array('route' => 'product/overview', 'controller' => 'products', 'action' => 'showOverview');
?>


De 1e route bevat een variabele en zoals je ziet beginnen ze allebei met "product/".

Stel nu je hebt deze url:

www.mijnwebshop.nl/product/123

Hoe match je dan de url "product/123" met de juiste route? Dat is mijn vraag. Heeft iemand daar een handige tip voor?
 
Pim -

Pim -

21/03/2012 10:46:21
Quote Anchor link
Je moet dan met regexen werken.

Ik doe het vaak zo:

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
<?php
$route
= new Route('/abc/:id');

class Route
{
    public function __c($pattern) {
        $this->regex =
            preg_replace(
                '#:([a-z])+#',
                '(?P<$1>[^/]+)',
                $pattern
            )
        ;
    }

    function
match($query)
    {

        if(!preg_match('#'.$this->regex.'#', $query, $matches))
            return false;
        return $matches;
    }
}

?>

Even 'quick and dirty'. Kijk eens naar http://www.php.net/manual/en/function.preg-match.php voor named subpatterns.

Toevoeging op 21/03/2012 10:47:52:

De patterns matchen nu alles voor de eerste slash, je kan dat evt nog wijzigen.
 
Ozzie PHP

Ozzie PHP

21/03/2012 10:54:30
Quote Anchor link
Thanks Pim, dat is zeer bruikbare info!

Ik zie dat je aan de $match functie een $query meegeeft. Moet dat niet een route zijn? En je returnt $matches? Moet ik daaruit concluderen dat een route meerdere matches kan hebben? Waar staat "__c" trouwens voor?
 
Pim -

Pim -

21/03/2012 11:01:22
Quote Anchor link
__c = __constructor ;)

Je gebruikt het als volgt:
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
<?php
class Router
{
    function
addRoute(Route $r)
    {

        $this->routes[] = $r;
    }
    function
match($query)
    {

        foreach($this->routes as $r)
            if(($matches = $r->match($query)) !== false)
                return $matches;
        return false;
    }
}

$router = new Router();
$router->addRoute(new Route('/appeltje'));
$router->addRoute(new Route('/peer/:id'));
$route->match('/peer/123');
?>


Toevoeging op 21/03/2012 11:02:36:

Zoals je in het PHP.net bestand ziet, geeft matches de regex matches terug. De named subpatterns zitten daarbij, zodat $matches['id'] het id is wat in de query zat.
Gewijzigd op 21/03/2012 11:03:14 door Pim -
 
Ozzie PHP

Ozzie PHP

21/03/2012 11:08:50
Quote Anchor link
Het ziet er (nu nog) wat ingewikkeld uit, maar wel erg gaaf als dit gaat werken :)

Maar hoe krijg je in jouw voorbeeld nou de controller en action? Want dat zie ik nu nergens terug.

Je helpt me hier overigens enorm mee, thanks!!
 
Pim -

Pim -

21/03/2012 11:24:38
Quote Anchor link
Dat hangt er een beetje van af hoe je daarmee omgaat.

De makkelijkste manier is om eoa string voorstelling te maken van de controller en action, bijv. Controller::Action. Je kan dan van route maken:
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
<?php
class Route
{
    public function __construct($pattern, $controller)
    {

        $this->regex = //...
        $this->controller = $controller;
    }


    public function match($query)
    {

        if(!preg_match('#'.$this->regex.'#', $query, $matches))
                    return false;
        return $matches+array('_controller'=>$this->controller);
    }
}

$router = new Router();
$router->addRoute(new Route('/appeltje', 'AppelController::index'));
$router->addRoute(new Route('/peer/:id', 'PeerController::peertje'));
$result = $route->match('/peer/123');
$result['_controller'] // is PeerController::peertje
$result['id'] // is 123

?>

Die data kan je dan aan eoa 'frontcontroller' geven, die de controller voor je zoekt en de parameters eraan geeft.
Gewijzigd op 21/03/2012 11:25:24 door Pim -
 
Ozzie PHP

Ozzie PHP

21/03/2012 11:30:11
Quote Anchor link
Vet :-)
Thanks voor de hulp!!! Hoop er nog deze week mee aan de slag te gaan. Heb nu in ieder geval een mooie basis :-)))
 
Pim -

Pim -

21/03/2012 11:30:33
Quote Anchor link
Even voor de volledigheid:
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
<?php
class PeerController
{
    public function peertjeAction($args)
    {

        print (int)$args['id'].' is het ID';
    }
}


class FrontController
{
    public function handle($controllerString, $args)
    {

        list($controller, $action) = explode('::', $controllerString);
        $controller = new $controller;
        // Weet niet of dit werkt
        $controller->$action($args);
        // Anders
        call_user_func(array($controller, $action), $args);
    }
}

?>

Toevoeging op 21/03/2012 11:31:57:

Dus dan krijgen we:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$router
= new Router();
$router->addRoute(new Route('/appeltje', 'AppelController::index'));
$router->addRoute(new Route('/peer/:id', 'PeerController::peertje'));
$result = $route->match('/peer/123');
$fc = new FrontController();
$fc->handle($result['_controller'], $result);
// Geeft: 123 is het ID
?>
Gewijzigd op 21/03/2012 11:32:31 door Pim -
 
Ozzie PHP

Ozzie PHP

21/03/2012 11:32:38
Quote Anchor link
Je bent de held van de dag :-)
 
Pim -

Pim -

21/03/2012 11:34:41
Quote Anchor link
Graag gedaan ;)
 



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.