route class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

Fullstack developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Dynamische Oracle/APEX Ontwikkelaar in de logistie

Bedrijfsomschrijving De organisatie in de regio Rotterdam is gespecialiseerd in het ontwikkelen van moderne webbased software voor de ERP branche. In totaal is er 20FTE aan specialisten actief binnen de organisatie. De ICT afdeling bestaat momenteel uit 15FTE. Ze groeien ontzettend hard en daarom zoeken zij een Oracle/APEX Developer die het reeds sterke team nog sterker komt maken. Hier werken ze op projectbasis voor verschillende grote organisaties in de logistieke sector. Het is een informele organisatie waarbinnen een fijne werksfeer heerst. Zoals aangegeven willen ze het team nog sterker maken en daarvoor zoeken ze bij voorkeur medior of senior Oracle/APEX

Bekijk vacature »

Front-end Developer - Juniorfunctie

Functie omschrijving Ben jij op zoek naar een uitdagende baan als front-end developer, in een informele werksfeer, waar jij echt het verschil kan maken? Wil jij graag werken voor een bedrijf dat sportiviteit en een open communicatie, hoog in het vaandel heeft staan? Dan hebben wij de perfecte vacature voor je! Voor een klein bedrijf in Rijen dat gespecialiseerd is in het omzetten van digitale woningtekeningen naar managementinformatie, zijn wij per direct op zoek naar een allround front-end developer. Jouw werkzaamheden zien er als volgt uit: Ja gaat nauw samenwerken met de back-end developer. De database structuur is volledig gebouwd

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 »

PHP Web Developer

Functie omschrijving Voor een klein softwarebedrijf in de omgeving Roosendaal, zijn wij op zoek naar een PHP web developer met een aantal jaar werkervaring. Wil jij graag werken aan in-house software projecten voor diverse klanten? Voel jij je prettige in een klein team developers, waar jouw inbreng enorm gewaardeerd wordt? Lees dan snel verder! Jouw werkzaamheden zien er als volgt uit: Je wordt verantwoordelijk voor de ontwikkeling van diverse applicaties. Dit kan de ene keer een online platform voor aanbiedingen zijn, en de andere keer een software pakket dat gebruikt wordt om interne processen te automatiseren. Het zijn stuk voor

Bekijk vacature »

Database Developer

Functie omschrijving Voor een logistieke dienstverlener in omgeving Zuid Beijerland zijn wij op zoek naar versterking. Weet jij als geen ander systemen aan elkaar te koppelen en heb jij goede kennis van SQL en UML, lees dan snel verder! Jouw taken zien er als volgt uit: Je bent in deze rol voornamelijk verantwoordelijk voor het bouwen, implementeren en beheren van koppelingen tussen de bestaande systemen (zowel business 2 business als application 2 application). Daarnaast inventariseer je de wensen van in- en externe klanten, die je vervolgens samen met je collega's, vertaalt naar technische specificaties, die jullie zelf ontwikkelen en implementeren.

Bekijk vacature »

Mendix Developer

Voor Troostwijk Groep zoeken wij een: Mendix Developer Wij zoeken Je bent een getalenteerde en ervaren Mendix Developer en het is tijd om je horizon te verbreden. Je wilt minder coderen en meer modelleren, minder bezig zijn met allerlei technische details en randvoorwaarden en meer met functionaliteit. Daarnaast ben je trots op de innovatieve en gebruiksvriendelijke applicaties die je in de loop van de jaren hebt gebouwd. Werk je graag in een enthousiast team, wil je veel vrijheid en kun je tegelijkertijd goed met deadlines omgaan, dan ben jij absoluut degene die wij zoeken! Wat je nodig hebt is ruime

Bekijk vacature »

Front-end Developer

Dit ga je doen Je komt in een DevOps-cultuur te werken waarbij je met je team werkt aan de front-end van diverse brand websites; Het ontwerpen van functionele en grafische ontwerpen die worden geïmplementeerd; Draagt zorg voor het maken van analyses; Je werkt nauw met je collega’s samen en geeft elkaar feedback en suggesties waar nodig; Het uitwerken van vraagstukken die afkomstig zijn van verschillende klanten; Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt

Bekijk vacature »

Front-end Developer Magento 2/Wordpress

Voor het aantrekkelijk houden en steeds vernieuwen van de huidige websites en webshops en het meedenken in de marketing zijn wij per direct op zoek naar een ervaren Front-end developer met gedegen kennis van Magento 2 (webshops) en Wordpress (websites). Wat bieden wij jou Mooi salaris! Meteen op contract bij de opdrachtgever! Gezellig, Kempisch bedrijf! 35 uur per week! Auto van de zaak! Wie ben jij Van een front-end developer verwachten wij: Een afgeronde Bachelor ICT opleiding met profiel ICT & Media Design. Dat je in het bezit bent van een Magento 2 professional front-end developer certificaat; Je hebt ruime

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

C#.NET developer

Functie Het development team bestaat momenteel uit vijf backend C#/.NET ontwikkelaars. Op dit moment zit één ontwikkelaar dedicated op de mobiele applicatie. Als team werk je samen aan het zelf ontwikkelde software platform. Dit bestaat uit zowel apps als websites. Om het systeem door meer dan honderdduizenden gebruikers wordt gebruikt is het bijna vanzelfsprekend dat de kwaliteit van het product hoog moet liggen. Het systeem bestaat uit drie projecten. Je werkt dus aan deze drie projecten waarbij de focus op z’n tijd verschuift. De technieken die worden toegepast zijn o.a. .NET Core, Xamarin, C# en MVC. Je zal dus met

Bekijk vacature »

Medior/senior Front-end 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

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

.NET Developer

Functie omschrijving Net afgestudeerd en op zoek naar een leuke baan als developer? Zoek niet verder! Ik heb een functie beschikbaar als back-end developer, bij een leuk familiebedrijf. Je gaat werken met de Microsoft stack en de technieken C# en .NET. Verder maak je gebruik van MVC en Entity framework. SQL kent ook geen geheimen voor jou. Jouw verantwoordelijkheden: Nieuwe maatwerk software bouwen; API koppelingen bouwen; Applicaties en software optimaliseren; Back-end programmeren. Een erg uitdagende functie, met veel vrijheid. Je kan meerdere dagen thuis werken en als je op kantoor werkt wordt de lunch verzorgd. Heb je interesse, reageer dan

Bekijk vacature »

Pagina: « vorige 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

08/09/2013 14:58:38
Quote Anchor link
Oke... duurt altijd zo lang :)
 
PHP hulp

PHP hulp

20/04/2024 10:45:07
 
Tom Swinkels

Tom Swinkels

08/09/2013 22:09:27
Quote Anchor link
Ondertussen heb ik alvast wat wijzigingen aangebracht in mijn router.

Route.class.php
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
32
33
34
35
<?php
/**
 * @author Tom Swinkels
 * @version v1.0 last edit on 08-09-2013
 */

class Route
{
    private $_pattern;
    private $_data;

    public function __construct( $pattern, $data )
    {

        $this->_pattern = $pattern;
        $this->_data = $data;
    }


    public function match( $query )
    {

        // ADD EXPESSION FOR MATCHING.
        $route = '#^' . $query . '$#';
        
        // CHECK FOR NUMERIC ROUTE
        $route = preg_replace( '/\<\#(.*?)\>/', '(?P<\1>[0-9]+)', $route );

        // CHECK FOR ALPHA NUMERIC ROUTE
        $route = preg_replace( '/\<\:(.*?)\>/', '(?P<\1>[A-Za-z0-9\-\_]+)', $route );

        if( preg_match( $route, $query, $matches ) )
        {

            return $this->_data;
        }

        return false;
    }
}

?>


Router.class.php
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
32
33
34
35
36
37
38
39
40
41
<?php
/**
 * @author Tom Swinkels
 * @version v1.0 last edit on 08-09-2013
 */

class Router
{
    private $_routes;

    public function __construct()
    {

        $this->_routes = array();
    }


    public function setRoute( Route $route )
    {

        $this->_routes[] = $route;
    }


    public function getRoute( $query )
    {

        $routes = $this->_routes;
        if( $routes )
        {

            foreach( $routes as $route )
            {

                $match = $route->match( $query );
                if( $match )
                {

                    $controllerName = $match['controller'] . 'Controller';
                    
                    $controller = new $controllerName();
                    $controller->$match['action']();
                    return $controller;
                }
            }
        }

        return false;
    }
}

?>


Dit stukje zou dan uiteindelijk in de FrontController moeten komen??
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$router
= new Router();
$router->setRoute( new Route( '/artikel/bewerk/<#id>/', array( 'controller' => 'Article', 'module' => 'edit', 'action' => 'index' ) ) );
$controller = $router->getRoute( $request->server( 'REDIRECT_URL' ) );
?>
Gewijzigd op 08/09/2013 22:30:41 door Tom Swinkels
 
Wouter J

Wouter J

08/09/2013 22:18:37
Quote Anchor link
De routes toevoegen wordt natuurlijk in een configuratie bestand gezet. Andere punten:
- de router heeft niks van doen met het koppelen van een route aan een controller, dit moet de front controller of een controller resolver doen.
- regel 22 van de router is nodeloos geheugen verspilling
- gebruik liever count om te kijken of er routes zijn
- een method addRoute beschrijft de functie beter
- gebruik in het geval van ids natuurlijk wel <#id>
- geen routes om in te zoeken zou ik opvatten als een fout
 
Tom Swinkels

Tom Swinkels

08/09/2013 22:30:08
Quote Anchor link
Ik heb de Route.class.php nog wat aangepast.

Bedankt voor je antwoord, hier kan ik wat mee!

Antwoorden op jou vragen:

- Ik return enkel de data, en in de FrontController roep ik de nieuwe controllers aan bedoel je?
- Regel 22?
- Waarom zou je dat met count kijken?
- Dit had ik nog niet aangepast.
- Wat bedoel je met geen routes om in te zoeken?

Hoe zou jij een default route afhandelen / toevoegen?

Verder geeft het bovenstaande stuk matches op alles.
 
Wouter J

Wouter J

08/09/2013 22:40:48
Quote Anchor link
- Nee, je retourneert gewoon de hele route en laat de front controller lekker uitzoeken wat hij daarna met die route wil doen, dat gaat de router niks aan.
- Ja, regel 22:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
19
20
21
22
23
<?php
    public function getRoute( $query )
    {

        $routes = $this->_routes;
?>

- Omdat je een array hebt en geen boolean value. Gewoon een kwestie van netjes scripten. Zoals ik altijd zeg "PHP is awesome because it's noobproof, a PHP developer is awesome if he doesn't use those noobproof-features".
- Nou, stel $this->_routes is leeg, dan zou ik een exceptiontje gooien

En default routes, wat bedoel je daarmee?
 
Tom Swinkels

Tom Swinkels

08/09/2013 22:48:16
Quote Anchor link
- Ok, maar wie roept de router aan? Aangezien de routes uit de config komen?
- Welke array bedoel je? Het is toch logies om alle routes in een array te gooien?

Ik bedoel wanneer er geen route is opgegeven, bijvoorbeeld www.site.nl hoe bepaal ik welke route er dan standaard wordt uitgevoerd?
 
Wouter J

Wouter J

08/09/2013 23:02:51
Quote Anchor link
- De frontcontroller roept de router aan. Routes uit config kun je erg simpel doen met:
Code (routes.php) (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$router
->addRoute(new Route(...));
// ...
?>

Code (frontcontroller.php) (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 FrontController
{
    public function terminate(...)
    {

        // ...

        $router = $this->getRouter();
        $route = $router->match(...);

        // ... do something nice with the matched route
    }

    protected function getRouter()
    {

        $router = new Router();
        require_once 'path/to/config/routes.php'; // laad routes

        return $router;
    }
}

?>


- Ja, maar deze array kan ook leeg zijn. Daar heb je nu een ifje voor gebruikt, zodra die leeg is zou ik dus een error gooien.

De route site.nl/ is de '/' route.
 
Tom Swinkels

Tom Swinkels

09/09/2013 00:07:54
Quote Anchor link
Ik ga nu slapen na een indrukwekkende reportage bij SBS6 te hebben gezien.

Morgen probeer ik het een en ander uit te werken.

Een quote uit je eerste bericht in dit topic "- Je mist default values, ik kan niet zeggen dat /:slug standaard de waarde 'home' krijgt.".

Toevoeging op 09/09/2013 10:10:37:

Ik heb ondertussen wat wijzigen doorgevoerd.

FrontController
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
32
33
34
<?php
/**
 * @author Tom Swinkels
 * @version v1.0 last edit on 09-09-2013
 */

class FrontController
{
    public function __construct( $requestUri )
    {

        $router = $this->getRouter();
        
        $route = $router->getRoute( $requestUri );
        if( $route )
        {

            $data = $route->getData();
            
            $controllerName = $data['controller'] . 'Controller';

            $controller = new $controllerName();
            $controller->$data['action']();
            return $controller;
        }
    }

    
    protected function getRouter()
    {

        $router = new Router();
        
        require_once('../include/routes.php'); // laad routes

        return $router;
    }
}

?>


Route
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
32
33
34
35
36
37
38
39
40
<?php
/**
 * @author Tom Swinkels
 * @version v1.0 last edit on 08-09-2013
 */

class Route
{
    private $_pattern;
    private $_data;

    public function __construct( $pattern, $data )
    {

        $this->_pattern = $pattern;
        $this->_data = $data;
    }

    
    public function getData()
    {

        return $this->_data;
    }


    public function match( $query )
    {

        // ADD EXPESSION FOR MATCHING.
        $route = '#^' . $query . '$#';
        
        // CHECK FOR NUMERIC ROUTE
        $route = preg_replace( '/\<\#(.*?)\>/', '(?P<\1>[0-9]+)', $route );

        // CHECK FOR ALPHA NUMERIC ROUTE
        $route = preg_replace( '/\<\:(.*?)\>/', '(?P<\1>[A-Za-z0-9\-\_]+)', $route );

        if( preg_match( $route, $query, $matches ) )
        {

            return $route;
        }

        return false;
    }
}

?>


Router
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
32
33
34
35
36
37
<?php
/**
 * @author Tom Swinkels
 * @version v1.0 last edit on 08-09-2013
 */

class Router
{
    private $_routes;

    public function __construct()
    {

        $this->_routes = array();
    }


    public function setRoute( Route $route )
    {

        $this->_routes[] = $route;
    }


    public function getRoute( $query )
    {

        $routes = $this->_routes;
        if( $routes )
        {

            foreach( $routes as $route )
            {

                $match = $route->match( $query );
                if( $match )
                {

                    return $route;
                }
            }
        }

        return false;
    }
}

?>
Gewijzigd op 09/09/2013 10:11:28 door Tom Swinkels
 
Dos Moonen

Dos Moonen

09/09/2013 11:09:16
Quote Anchor link
Returnen in een constructor doet niets. Die instantie van de juiste controller zul je moeten opslaan in de FrontController class.
 
NOLot -

NOLot -

09/09/2013 12:55:52
Quote Anchor link
Zelf gebruik ik een aparte compiler voor het maken van de reguliere expressie en een matcher die de goede route zoekt bij de url

Naar mijn mening is zo'n route class die je als voorbeeld stelt genoeg voor kleine applicaties. Echter als je zoals Symfony ook vette dingen wilt doen als url's genereren per route bijvoorbeeld, dan moet je wat extra code toevoegen
 
Tom Swinkels

Tom Swinkels

09/09/2013 13:50:34
Quote Anchor link
@Dos: Wat bedoel je precies?

@NOLot: Ik wacht even op wat een reactie van Wouter.

@Wouter: Wat ik eigenlijk bedoel is wanneer er geen match gevonden is, wil ik dat hij bijvoorbeeld een 404 pagina krijgt te zien. Dit zou dan een default route zijn?
 
Kris Peeters

Kris Peeters

09/09/2013 13:59:32
Quote Anchor link
Een constructor heeft als taak een object aan te maken. Daar kan je ook de $this eigenschappen een initiële waarde geven.
Een constructor heeft niet als taak dingen te returnen.

Zorg dus dat je nooooooit in een constructor iets returnt.


Het gaat om lijn 21 van FrontController
------
Edit:
Het hele concept van FrontController moet dus anders.
Gewijzigd op 09/09/2013 14:03:00 door Kris Peeters
 
Wouter J

Wouter J

09/09/2013 16:38:31
Quote Anchor link
@Tom, en dat is dus niet een default route. Zodra de router geen match vindt retourneert hij false of gooit hij een exception (ik heb voorkeur voor dat laatste). Wanneer dit zo is roept de front controller de 404 controller aan.
 
Tom Swinkels

Tom Swinkels

09/09/2013 16:52:49
Quote Anchor link
Bedoel je dan zo iets?

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
32
33
34
35
36
37
38
<?php
/**
 * @author Tom Swinkels
 * @version v1.0 last edit on 09-09-2013
 */

class FrontController
{  
    public function execute( $requestUri )
    {

        $router = $this->getRouter();
        
        $route = $router->getRoute( $requestUri );
        if( $route )
        {

            $data = $route->getData();
            
            $controllerName = $data['controller'] . 'Controller';

            $controller = new $controllerName();
            $controller->$data['action']();
            return true;
        }

        else
        {
            //404 CONTROLLER??
        }
    }

    
    protected function getRouter()
    {

        $router = new Router();
        
        require_once( dirname(__FILE__) . '/../include/routes.inc.php' ); // laad routes

        return $router;
    }
}

?>


Wouter wat vindt jij er van om alles nog een op te splitsen naar een routerCompiler en routerMatcher?
 
Kris Peeters

Kris Peeters

09/09/2013 16:55:29
Quote Anchor link
oops, iets te vlug gereageerd
Gewijzigd op 09/09/2013 16:56:17 door Kris Peeters
 
Wouter J

Wouter J

09/09/2013 17:44:08
Quote Anchor link
Ja, dat bedoel ik. Behalve dat de FrontController gewoon het hele request moet krijgen en niet alleen de URI. Want hoe kun je van buiten nou weten dat hij de URI nodig heeft? Je weet alleen dat hij informatie uit de Request nodig heeft.

Het gebruiken van een Compiler lijkt me niet nodig, het gebruiken van een UrlMatcher oid lijkt me wel een tof plan.
 
Tom Swinkels

Tom Swinkels

09/09/2013 23:01:11
Quote Anchor link
Dat gedeelte heb ik aangepast.

UrlMatcher kan altijd nog.

Er gaan op dit moment nog iets mis met de match hij matcht namelijk alles.

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
<?
    public function match( $query )
    {

        // ADD EXPESSION FOR MATCHING.
        $route = '#^' . $query . '$#';
        
        // CHECK FOR NUMERIC ROUTE
        $route = preg_replace( '/\<\#(.*?)\>/', '(?P<\1>[0-9]+)', $route );

        // CHECK FOR ALPHA NUMERIC ROUTE
        $route = preg_replace( '/\<\:(.*?)\>/', '(?P<\1>[A-Za-z0-9\-\_]+)', $route );

        if( preg_match( $route, $query, $matches ) )
        {

            return $route;
        }

        return false;
    }

?>


Toevoeging op 09/09/2013 23:45:31:

Probleem is opgelost.

Ik match de query met de query, maar ik moet natuurlijk de query matchen met de route.

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
<?
    public function match( $query )
    {

        // ADD EXPESSION FOR MATCHING.
        $route = '#^' . $this->_pattern . '$#';
        
        // CHECK FOR NUMERIC ROUTE
        $route = preg_replace( '/\<\#(.*?)\>/', '(?P<\1>[0-9]+)', $route );

        // CHECK FOR ALPHA NUMERIC ROUTE
        $route = preg_replace( '/\<\:(.*?)\>/', '(?P<\1>[A-Za-z0-9\-\_]+)', $route );

        if( preg_match( $route, $query, $matches ) )
        {

            return $route;
        }

        return false;
    }

?>


Toevoeging op 10/09/2013 00:11:10:

Wat ik nu nog mis is een Registry zoals hier http://phpro.org/tutorials/Model-View-Controller-MVC.html wordt beschreven.

Zouden jullie dit op de zelfde manier doen? Of is het een slecht voorbeeld?
 
NOLot -

NOLot -

10/09/2013 11:27:15
Quote Anchor link
Kan ja, maar ik ben zelf niet een groot fan van singletons (db::getInstance()). Google anders eens op dependency injection container. Daar is al veel over geschreven op het gebied van php. http://pimple.sensiolabs.org/ vind ik persoonlijk een erg sterk voorbeeld. Goede uitleg staat ook hier http://fabien.potencier.org/article/11/what-is-dependency-injection
 
Tom Swinkels

Tom Swinkels

10/09/2013 12:44:40
Quote Anchor link
Wat stel jij dan voor?

Verder had ik nog een vraagje over wanneer er geen route gevonden is.
Is het logisch om dan in de FrontController te bepalen dat er geen route gevonden is en dan een conytollrt aan te roepen die bijvoorbeeld een 404 error geeft?
De router is toch verantwoordelijk voor alle routes, het lijkt mij dus toch logisch om daarvoor een default route te maken?
 
Tom Swinkels

Tom Swinkels

11/09/2013 17:28:46
Quote Anchor link
-
Gewijzigd op 12/09/2013 19:59:18 door Tom Swinkels
 

Pagina: « vorige 1 2 3 volgende »



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.