router

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# Software Developer Software Gebouwinstallaties

Over het bedrijf: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij onderhouden complete duurzame systeemintegratie oplossingen en services voor gebouw gebonden installaties. Ben jij geschikt als Software Engineer? Heb je ervaring in een soortgelijke functie? Vaste baan: C# Software Developer Software Gebouwinstallaties HBO 3.400 - 4.700 Software Engineer Ons bedrijf levert en onderhoudt complete duurzame systeemintegratie oplossingen en services voor gebouwgebonden installaties op het gebied van energiemanagement, klimaat, beveiliging en verlichting. Door onze innovatieve aanpak en creatieve oplossingen blijven wij vooruit lopen op de technologie. Zij werken voor MKB

Bekijk vacature »

Front-end Developer

Front-end Ontwikkelaar / Developer (32 / 36 uur) Ben jij die innovatieve front-end ontwikkelaar die mee wil werken aan onze technische uitdagingen? Vind je het leuk om met betrokken collega's mooie dingen neer te zetten en samen te brainstorming over de ontwikkeling en implementatie van applicaties? Wat ga je doen Als front-end ontwikkelaar werk je binnen een afdeling met gedreven ontwikkelaars aan de technische uitdagingen die er liggen. Jij zet je in om medische applicaties te ontwikkelen die de donatie en transplantatie van organen en- weefsels beter, sneller en zorgvuldiger maakt. Je krijgt veel vrijheid en je gaat werken met

Bekijk vacature »

App Ontwikkelaar ERP

Bij welk bedrijf je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Zij bieden praktische ERP oplossingen. Ben jij een veelzijdige App Ontwikkelaar? Heb je ervaring met Python of .Net Core. Vaste baan: App Ontwikkelaar ERP Python 2.600 - 4.000 App Ontwikkelaar Deze werkgever is gespecialiseerd in het automatiseren van bedrijfsprocessen in de procesindustrie. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke

Bekijk vacature »

Developer ERP

"Door digitalisering creëren wij een verantwoord woon- en werkklimaat, nu en in de toekomst - voor iedereen." Wil jij software maken die onze klanten het werk gemakkelijker maakt en wil jij jezelf continu blijven ontwikkelen? Haal jij energie uit het werken op internationaal niveau? Zoek jij jouw uitdaging binnen een professionele organisatie met een informele sfeer? Dan zijn wij op zoek naar jou! Ben jij ook op zoek naar Aareon? Developer ERP Ons aanbod Wat we jou bieden als developer binnen Aareon hebben we hieronder voor jou op een rijtje gezet. We bieden jou allereerst uitdaging en fijne collega’s. Daarnaast

Bekijk vacature »

HANA Developer

Our client leads the worldwide development, production and sales of high-end lithography systems for the semiconductor industry. In short, we make the machines that make computer chips, or integrated circuits. We build some of the most amazing, complex machines that you will ever see – and the software to run them – to develop smaller, faster and still more affordable chips. It is because of our machines that the world’s technology has steadily evolved. This role is situated in the Big Data Analytics (BDA) Domain, specifically in Corporate Analytics. Our teams have mixture of young talent and senior specialists and

Bekijk vacature »

Front-End Software Developer

You are a talented Front-End Software Developer who is motivated to combine the art of design with the art of programming. Bedrijfsomschrijving We believe in a bolder future. An open world where people, businesses and capital can move freely to form a truly global marketplace. A world wherein each business idea and personal belief can reach its full potential whilst at the same time respecting local customs, traditions and laws. We support ideas, ambitions, growth and acceleration, because we truly believe the potential of globalisation for businesses and professionals is unlimited. As a corporate & fund service provider, we guide

Bekijk vacature »

Medior Senior .NET Developer Software

Over de werkgever: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij faciliteren data gedreven innovatie in het onderwijs. Ben jij een enthousiaste .NET / fullstack developer? Heb je ervaring met .NET? Vaste baan: Medior Senior .NET Developer Software HBO WO 3.200 - 4.800 .NET Developer We helpen organisaties om technologie in te zetten om sneller en succesvoller data gedreven producten en diensten te ontwikkelen, aan te bieden en te implementeren. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en

Bekijk vacature »

Microsoft Developer Technische Automatisering

In het kort Als .NET Software Developer werk je aan diverse software-ontwikkelprojecten binnen de technische automatisering. Je ontwikkelt innovatieve oplossingen voor onze klanten gericht op het automatiseren en digitaliseren van hun systemen en processen. Denk aan verbindingen van apparaten met internetservices en geavanceerde communicatie- en domotica-oplossingen. Je werkt zowel in-house als op locatie bij de klant. En je ontwikkelt niet alleen in .NET, maar je krijgt ook de kans jezelf te ontwikkelen, zowel technisch als persoonlijk. Dit vind je leuk om te doen Ontwikkelen van diverse software-ontwikkelprojecten binnen C# en .NET Bedenken, ontwerpen en ontwikkelen van de juiste oplossing binnen

Bekijk vacature »

Frontend Developer JavaScript React Vue

Wie wordt jouw werkgever?: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is een full-service digital agency. Ben jij een front-end developer? Heb je ervaring in technisch complexe projecten? Vaste baan: Frontend Developer JavaScript Vue Node 3.000 - 4.200 Frontend Developer Deze werkgever is de Drupal specialist in Nederland. Deze werkgever heeft meerdere vestigingen door Nederland en België heen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Wat ga je precies doen?: Voor

Bekijk vacature »

Sr C# Developer C# .NET

Bij welk bedrijf je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever levert software aan beurzen, banken en pensioenfondsen. Ben jij een ervaren software ontwikkelaar? Heb jij ervaring met C# en Javascript? Vaste baan: Sr C# Developer C# .NET HBO 3.800 - 5.000 Senior C# Developer Deze werkgever is een groeiend en innoverend bedrijf dat wereldwijd adviseert over financiële informatie- en analysesystemen die gebruikt worden door bijvoorbeeld banken en pensioenfondsen. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe

Bekijk vacature »

Developer ERP

"Door digitalisering creëren wij een verantwoord woon- en werkklimaat, nu en in de toekomst - voor iedereen." Wil jij software maken die onze klanten het werk gemakkelijker maakt en wil jij jezelf continu blijven ontwikkelen? Haal jij energie uit het werken op internationaal niveau? Zoek jij jouw uitdaging binnen een professionele organisatie met een informele sfeer? Dan zijn wij op zoek naar jou! Ben jij ook op zoek naar Aareon? Developer ERP Ons aanbod Wat we jou bieden als developer binnen Aareon hebben we hieronder voor jou op een rijtje gezet. We bieden jou allereerst uitdaging en fijne collega’s. Daarnaast

Bekijk vacature »

SAP Analystics Cloud Developer

ASML brings together the most creative minds in science and technology to develop lithography machines that are key to producing faster, cheaper, more energy-efficient microchips. We design, develop, integrate, market and service these advanced machines, which enable our customers - the world’s leading chipmakers – to reduce the size and increase the functionality of their microchips, which in turn leads to smaller, more powerful consumer electronics. The Cyber Defense Center (CDC) within ASML (Veldhoven office) through real time detection & response minimizes the damage caused by threat actors bypassing ASML preventative security controls and protecting ASML information. To enhance our

Bekijk vacature »

Lead Developer Webapplicaties

Over het bedrijf: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij helpen bedrijven digitaliseren met weboplossingen en bedrijfsdoelstellingen te behalen met online marketing. Ben jij een lead developer? Heb je ervaring met het ontwikkelen van websites en applicaties in WordPress en/of Laravel? Vaste baan: Lead Developer Webapplicaties JavaScript 4.000 - 5.200 Lead Developer Als creatief digitaal bureau maken wij websites en softwareapplicaties op maat. Ook complexere projecten gaan we niet uit de weg. Zij werken voor MKB klanten. Deze werkgever heeft veel verschillende projecten. Houd jij van afwisseling? Dan

Bekijk vacature »

Senior Ruby/Elixir Developer

Wat ga je doen? What are you going to do? Being a Ruby/Elixir Developer at T-Mobile is an exciting and varied job that touches different facets of both the customer fulfilment & assurance processes and the network infrastructure here at T-Mobile. The department we called ‘Digital Orchestration’ is the gateway between the commercial customer services and the implementation of those in our networks and on our service platforms. This encompasses internet access, TV and voice services for our consumer domain and internet access, connectivity and hosted voice/mobile connect services for our extended business line. The SCRUM team that you’ll join

Bekijk vacature »

Mendix Lead Developer bij PostNL

Mendix Lead Developer Den Haag HBO/WO IT - software development Professional "Werk samen met ons om van PostNL een 'logistical tech (driven) company' te maken door Mendix in te zetten voor onze kritieke logistieke processen". Wat ga je doen? PostNL heeft de ambitie om uit te groeien tot het meest efficiënte en innovatieve logistieke post en e-commerce platform in de Benelux. Om die digitale transformatie tot een succes te maken, maken wij op een unieke manier gebruik van Mendix technologie. Wij zetten Mendix namelijk in voor onze meest kritieke logistieke systemen. Daarom bouwen we hard aan onze eigen Mendix engineering

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

06/07/2022 16:03:13
 
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.