router

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Developer / full stack / Java / Angular

Functieomschrijving Would you like to work at a company in Eindhoven on a custom application landscape, both front and backend? Does Java hold few secrets for you and are you also experienced with Javascript / Angular? Then we are looking for you! As a Software Developer, you work on both the front-end and back-end of the custom application landscape; Participate in projects in the field of system expansion, renewal and improvement; Work with Java, JEE, Spring, Angular, CI, SQL, Agile, webservices and others; Help with the translation to technical solutions and advise the organization in your field of expertise; Work

Bekijk vacature »

.NET - Backend Webdeveloper - minimaal 3 jaar erva

Functieomschrijving Als Backend .NET Developer kom je te werken aan het belangrijkste (cloudbased) product van de organisatie, namelijk een applicatie waarmee klanten hun assortiment online in 3D kunnen showen. Dit doe je regelmatig alleen, maar soms ook samen met je collega Developers. Het is dan ook belangrijk dat je goed zelfstandig en goed in teamverband kunt werken. Tot jouw kerntaken behoren o.a. het bouwen, onderhouden, verbeteren en testen van complexe WebAPI's van de applicatie. Je denkt continu na over verbeteringen en implementeert nieuwe technieken vanuit de markt in de applicatie(s), want innovatie is een belangrijk begrip in de organisatie. Daarnaast

Bekijk vacature »

Junior Office 365 Developer / DevOps / Financi&eum

Functieomschrijving Aan de slag als DevOps Engineer binnen één van de grootste organisaties in Nederland. Affiniteit met Office 365. Meehelpen ontwikkelen aan de huidige Office 365 omgeving en zorg dragen voor een secure, snel en bovenal veilig manier van werken. Als bovenstaande jouw aandacht trekt, lees dan verder! Als DevOps Engineer ben je primair verantwoordelijk voor het bouwen/configureren & automatiseren (60%-70% van je werk) en testen & beheren (30%-40% van je werk) van het platform waar Office 365 op draait. Concreet zullen je werkzaamheden als volgt zijn: Het doorontwikkelen van het platform waar Office 365 op draait; Automatiseren van het

Bekijk vacature »

.NET C# web developer gezocht, inhouse project dev

Ben je een ervaren .NET C# web developer en op zoek naar een leuke baan in het zuiden van Zuid-Holland? Een inhouse functie maar met de afwisseling van verschillende projecten en klanten? Projecten die uitdagend zijn door de complexiteit van de systemen? Lees dan verder! Voor een bedrijf in Goeree-Overflakkee zijn we momenteel op zoek naar een ervaren .NET C# web developer. Het bedrijf bestaat uit iets meer dan 20 werknemers en verschillende ervaren software developers. De software projecten zijn uiteenlopend, maar altijd maatwerk oplossingen en veelal complex en bedrijfskritisch van karakter. De bedrijven waarvoor je software ontwikkeld kunnen variëren

Bekijk vacature »

Senior Backend developer (Scala/Python)

Wij zijn op zoek naar een senior Backend developer met een affiniteit met security om de bestaande backend software te implementeren en uit te breiden. Tachyonic Solutions is een lean organisatie die zich richt op het leveren van software en hostingoplossingen voor hoge beveiligingsdoeleinden (Private Cloud) en communicatie software. Derhalve zoeken wij ook iemand die het fijn vindt om in een klein team zelfstandig te werken en die bereid is om veel eigen verantwoordelijkheid op zich te nemen. Je moet dan ook aantoonbare ervaring hebben zodat we je die vrijheid kunnen geven. Werkzaamheden: -het uitbreiden van bestaande softwareoplossingen -het in

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Front-End Developer JavaScript Vue.js Financial or

Functieomschrijving Are you an enthusiastic Front-End Developer? Do you have experience working with JavaScript & frameworks like Vue.js? Do you have a focus on delivering high quality code that is scalable, readable and clean? If your answers are yes, then don't hesitate to apply! The client designs and develops the next generation of applications. As a Front-End Developer you are, with your team, responsible for speeding up and strengthening the digital transformation by designing, implementing and supporting the internet banking applications, with main focus on payments solutions. Your focus within the team will be on translating customer needs to excellent

Bekijk vacature »

C# / .Net software Developer

C# / .Net software Developer in Eindhoven Wat ga je doen? Je programmeert en bouwt nieuwe koppelingen tussen bestaande en nieuwe klanten hiernaast doe je dat ook voor het Warehouse Management Systeem (Manhattan Scale). Je ontwikkelt diverse oplossingen tussen/binnen de systemen en databases. Je bent betrokken bij het hele ontwikkeltraject met de klant, vanaf de eerste aanvraag tot het leveren van support na levering. Wat maakt jou geschikt? Je hebt hbo werk- en denkniveau m.b.t. computer en software wetenschappen; Development skills in C#, .net, Microsoft SQL, HMTL5, CSS an JavaScript; Minimaal 3 jaar ervaring in software development; Vloeiend Nederlands en

Bekijk vacature »

Project Delivery Officer

Project Delivery Officer Do you enjoy being the linking pin between customers, the project team, and the internal organization? Can you oversee the complexity of different contracts and do you like the challenge of successfully following up on and managing them? If so, this job opening is perfect for you. We need your expertise The role of project delivery officer (PDO) is a versatile one. As PDO, you are part of the PDO team, which represents Itility’s control room. The team has an external focus (sales support, forecasting, and first point of contact for our customers) and is the linking

Bekijk vacature »

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

Bekijk vacature »

Applicatie Beheerder

Wie zijn wij? Nederland vergrijst, ouderen wonen steeds langer zelfstandig thuis. De zorgvraag van mensen in verzorgings- en verpleeghuizen neemt toe. Tegelijkertijd zijn zorgmedewerkers schaars. Er zijn veel vacatures en de werkdruk is hoog. De zorg moet dus efficiënter, duurzamer en moderner. Digitalisering speelt daarin een sleutelrol. Hoe kunnen we zorgorganisaties in een sterk veranderende technologische wereld helpen? Die vraag stond centraal bij het ontwikkelen van Open Care Connect, het nieuwe concept van Eurocom Group. Een belangrijke vraag, want organisaties kunnen worstelen met de transitie naar de nieuwe digitale wereld. Open Care Connect faciliteert deze transformatie, met als resultaat: duurzame

Bekijk vacature »

Full-stack .NET developer gezocht, Goeree-Overflak

Ben je een .NET software developer en op zoek naar een professionele werkomgeving binnen een wat groter innovatief en ambitieus bedrijf? Waar sprake is van een uitgebreid applicatielandschap met elke dag nieuwe uitdagingen, waar alles mogelijk is, binnen een goede collegiale sfeer? Lees dan verder! Voor een bedrijf in Goeree-Overflakke zijn we momenteel op zoek naar een ervaren software developer. De IT afdeling bestaat uit circa 60 mensen waarvan zo'n 15 developers. Voor de recente architectuur wordt gebruikt gemaakt van de nieuwste technieken waaronder .NET Core, Docker en Angular. Echter bestaat het applicatielandschap uit een groot aantal verschillende applicaties waarbij

Bekijk vacature »

FrontEnd Angular Developer (Dutch speaking!)

Onze klant is een bekende speler in IT Consultancy en werkt met toonaangevende organisatie. De IT Professionals die bij onze klant werken krijgen de mogelijkheid om in consultancy/detacheringsvorm aan verschillende projecten te werken bij bekende en grote organisaties. Bedrijfsomschrijving Key-account van Michael Page Omschrijving Je zult in project verband worden ingezet bij een van de bekende energieleveranciers in Nederland en ben je samen met je collega 's doorslaggevend bij het afronden van een nieuwbouwproject waar al enige tijd aan gewerkt wordt. Samen met een collega zul je een back-end team aanvullen tot een volwaardig feature team zodat de Agile Release

Bekijk vacature »

Fullstack .NET developer voor het onderwijs

Functieomschrijving Onze klant bouwt SAAS oplossingen voor het onderwijs en ze hebben inmiddels een aantal innoverende applicaties in de markt staan. Je gaat samen met je team op Scrum basis aan de slag om deze .NET applicaties verder te verbeteren en uit te bouwen. Je team bestaat uit een aantal .NET developers en frontenders en naast technisch uitdagend development werk, ga je ook meedenken met de architectuur en zorg je dat de kwaliteit van de applicaties hoog zijn want ze moeten altijd stabiel en snel werken! Functie-eisen - Je hebt een afgeronde HBO opleiding (IT) - Je hebt ervaring met

Bekijk vacature »

THREAT MODELER - DEVSECOPS

THREAT MODELER - DEVSECOPS Utrecht 13th month pay & Holiday allowance Bonus Program 26 holidays Training & Learning opportunities Laptop & Smartphone 32-40 hours p.w. Your job As an Experienced Security Specialist in DevSecOps, you will help our clients in developing and evangelizing the best practices for DevSecOps and secure CI/CD and coaching agile software development teams embedding a security mindset. You should have the following experience/expertise: Work with the DevOps teams learn them how to apply a threat modeling solution to their own environment and how to adjust for new situations Understand security design for applications, APIs, containers, dockers,

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

10/08/2020 04:55:34
 
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.