route class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

Bekijk vacature »

Java Developer / Sociaal domein

Dit ga je doen Nieuwbouw en doorontwikkeling; Beheer en wanneer nodig onderhoud; Bijdrage leveren in het functioneel- en technisch ontwerptraject; Analyseren van productie verstoringen; Meedenken over vernieuwingen en verbeteringen. Hier ga je werken De organisatie waar jij komt te werken focust zich op software development met een maatschappelijk tintje. De afdeling software ontwikkeling bestaat uit vijf verschillende scrum teams, met allen hun eigen focus gebied. Zo zijn er een aantal teams die zich focussen op specifieke applicaties, maar is er ook een team gericht op projecten. Binnen de organisatie staat innovatie en kwaliteit voorop. Een aantal applicaties draait nog op

Bekijk vacature »

Junior Low-code ontwikkelaar gezocht omgeving Arnh

Bedrijfsomschrijving Wij zijn een dynamisch IT-bedrijf dat zich richt op het stroomlijnen van bedrijfsprocessen en het creëren van ondersteunende applicaties. Onze kracht ligt in het combineren van zakelijk inzicht met IT-expertise via gestroomlijnde procesontwerpen en wendbare applicatieontwikkeling met behulp van Low-code technologieën. Als jonge professional krijg je de kans om samen te werken met een team van 15 deskundige collega's, verspreid over nationale en internationale locaties. We bieden je een leerzame omgeving waar je je vaardigheden kunt ontwikkelen en groeien in je rol als Low-code ontwikkelaar. Word jij onze nieuwe Junior Low-code Ontwikkelaar (OutSystems)? Versterk ons team en draag bij

Bekijk vacature »

Belastingdienst - Freelance Applicatieontwikkelaar

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Hybride. Kantoordagen in Utrecht, incidenteel in Apeldoorn Functieomschrijving: De afdeling IV – Generieke Voorzieningen – Interactie Online is onderdeel van de keten Interactie. De missie van de keten is: “het faciliteren van de interactie met alle burgers, bedrijven en hun vertegenwoordigers om hen in staat te stellen aan hun fiscale verplichtingen te voldoen en aanspraak te maken op hun rechten.” De afdeling Interactie Online heeft een belangrijke bijdrage binnen deze keten. Dit door het ontwikkelen

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

Bekijk vacature »

Oracle APEX developer

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

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

3D BIM Add-on Developer

Als 3D BIM add- on ontwikkelaar bij KUBUS ontwikkel je add-ons (BCF Managers genaamd) voor de toonaangevende building information modeling (BIM) programma's Revit, Navisworks, Archicad, AutoCAD en Tekla Structures. BCF Managers maken gegevensoverdracht mogelijk tussen BIM-software en BIMcollab. Je werkt zowel aan de front- als aan de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en

Bekijk vacature »

Ontwikkelaar Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »

High level C++ QT Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13486 Introductie Would you like to be involved in every aspect of software development for our exceptional products, from specification and design to testing and integration? If you're passionate about software development and eager to apply your programming skills to create customer-focused deliverables, then this is the perfect chance for you to expand your expertise. You can become a member of our Machine Control department's data-driven development team, where you'll design and build software solutions that optimize machine productivity. As a senior software design engineer, you'll participate in all phases

Bekijk vacature »

Lead C++ Developer

The role of Lead C++ Developer As Lead C++ Developer at KUBUS you will be responsible for the implementation design of requirements and the software architecture of the desktop applications of BIMcollab, our platform for 3D model validation and issue management aimed at improving the quality of 3D building design models. Better 3D models lead to better buildings, thus contributing to the sustainability of the built environment with smarter use of materials, less waste and energy-efficient buildings. A good user experience is of paramount importance to us; we go for innovation and quality in our development. In your role as

Bekijk vacature »

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving: De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van bromen snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie.De opdracht bestaat uit: het programmeren van de diverse modules;het tijdens demo's tonen van de

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

22/12/2024 15:16:47
 
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.