MVC Routing

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in de regio van Bergen op Zoom ben je als PHP Developer niet alleen gefocust op het ontwikkelen van Software. Daarnaast ben je ook voortdurend bezig met het zoeken naar nieuwe mogelijkheden en innovaties die essentieel kunnen zijn voor de efficiëntie van software ontwikkeling. Je deelt veel kennis en informatie met het team en ontvangt deze dan ook graag terug. Techstack: PHP, Symfony & mySQL. Bedrijfsprofiel Deze uitdagende opdrachtgever is ruim 20 jaar actief in de regio Bergen op Zoom. Het vooruitstrevende team staat de hele dag voor je klaar om je te helpen en ondersteunen.

Bekijk vacature »

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

Bekijk vacature »

.NET Developer

Functie omschrijving Ervaren .NET Developer gezocht! Wij zoeken een ervaren .NET developer die aan de slag gaat voor een softwarebedrijf in de regio Rhenen. In deze rol ben jij zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Daarnaast houdt jij je bezig met de nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en product specialisten om mooie producten te creëren. Bedrijfsprofiel Waar kom je te werken? Je komt te werken voor snelgroeiende softwareleverancier en allround dienstverlener. Klanten van deze

Bekijk vacature »

Back-end Developer

Functie omschrijving Als Back-end Developer heb je de eer om als eerste interne developer bij deze organisatie te beginnen. Op dit moment zijn er externe developers, maar daar wil de organisatie verandering in brengen. Op termijn moet de gehele afdeling uit intern personeel bestaan. Je kan je voorstellen dat de eerste interne developer ook de nodige kennis mee moet brengen. Dat klopt. Je gaat je namelijk aan het begin bekommeren over de externe developers en uiteindelijk over je interne collega's. Verder ga je het volgende doen: Het bedenken, beheren en onderhouden van webportalen, API-koppelingen en applicaties; Je bedenkt en werkt

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

SAP ABAP Developer

Dit ga je doen Software ontwikkeling met behulp van o.a. ABAP, Sapscript en Smartforms Maatwerk development op SAP ECC 6.0, in de toekomst S/4 HANA Samenwerken met Business Analisten die functioneel en technisch ontwerpen aanleveren Testen van opgeleverde software Bugfixing Ondersteuning van eindgebruikers Hier ga je werken Onze klant, een internationaal gevestigd productiebedrijf dat mensen blij maakt, is ter versterking op zoek naar een ABAP Developer voor hun SAP team. Het team van 4 mensen verzorgt de ontwikkeling van maatwerk voor de SAP omgeving waar wordt gewerkt met modules SD, FI/CO, PM en MM. Momenteel draait het bedrijf op SAP

Bekijk vacature »

Software Ontwikkelaar .NET te Zaandam

Bedrijfsomschrijving Je komt hier terecht bij een door-en-door softwarebedrijf, waarbinnen meerdere SaaS pakketten worden ontwikkelt voor diverse sectoren. Hierbij kun je denken aan bijvoorbeeld de logistieke en medische branche. Deze organisatie kenmerkt zich door de hoge mate van complexiteit in de applicaties, wat betekent dat jij je hier niet zal gaan vervelen. Integendeel: Jij gaat hier elke dag ontzettend veel leren en je in razend tempo ontwikkelen als C# .Net Developer met focus op back-end. Het team bestaat uit ongeveer 20 personen personen, waarvan het grootste deel zich richt op software development. De sfeer is informeel en professioneel. De producten

Bekijk vacature »

Back End Developer .NET

Dit ga je doen Ontwikkelen in C# .NET en werken aan nieuwbouw, uitbouw en onderhoud van de software (die communiceren met 68.000 sensoren, waardoor er meerdere miljoenen berichten per uur verwerkt worden); Samenwerken in Scrum Teams; Meewerken aan verschillende, uitdagende projecten; Werken met nieuwe technologieën en vrijheid krijgen om jezelf te ontwikkelen en door te groeien. Hier ga je werken Je komt als Developer te werken bij een organisatie die gespecialiseerd is in software die real-time wordt gebruikt. De software constateert waar werk moet worden uitgevoerd en de chauffeurs worden met een andere applicatie hierop geattendeerd. Ook wordt er direct

Bekijk vacature »

(Junior) PHP Ontwikkelaar bij een retail bedrijf i

Bedrijfsomschrijving Ben jij een ervaren PHP ontwikkelaar met een passie voor retail en ICT? Wil jij werken in een team dat zich bezighoudt met het ontwikkelen van uitdagende applicaties voor een groot retailbedrijf in Delft? Dan zijn zij op zoek naar jou! Functieomschrijving Als PHP Ontwikkelaar werk je in een team aan de ontwikkeling van applicaties die door de gehele organisatie worden gebruikt. Je bent verantwoordelijk voor het ontwikkelen, testen en implementeren van deze applicaties. Je werkt hierbij nauw samen met andere ontwikkelaars, projectmanagers en stakeholders binnen de organisatie. Je taken bestaan onder andere uit: Ontwikkelen van nieuwe functionaliteiten en

Bekijk vacature »

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

Senior Front-end Developer

Wordt jij de nieuwe Front end specialist / developer? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel binnen als

Bekijk vacature »

Medior/senior Back-end developer wanted!

Functie Because of the growth within the company, we are looking for reinforcement in the devlopmenttean. As a back-end developer you build the company software that helps us with the primary processes. A fun (internal) project in which you continuously develop the software! You will work in a small team, we have daily stand-ups and a scrum session every fortnight, led by our Scrum Master. During these sessions, you get the opportunity to present your ideas and discuss them with your fellow developers and the Product Owner. Within the development teams, we use Trello, Gitlab, Jiira, Confluence and Boockstack. They

Bekijk vacature »

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

Pagina: « vorige 1 2

Wouter J

Wouter J

15/12/2013 19:36:28
Quote Anchor link
Je wilt altijd flexibiliteit houden over hoe je routes eruit zien.
 
PHP hulp

PHP hulp

07/05/2024 06:38:19
 
Mark Hogeveen

Mark Hogeveen

15/12/2013 21:12:35
Quote Anchor link
Conclusie: routes netjes opslaan, en maken zoals je ze zelf wil. Geen gedoe met bestandsnamen.
 
Ozzie PHP

Ozzie PHP

15/12/2013 21:30:11
Quote Anchor link
Ja, inderdaad. Je krijgt dan dus zoiets:

route = contact:
- controller = ContactController
- action = IndexAction
 
Mark Hogeveen

Mark Hogeveen

16/12/2013 20:42:10
Quote Anchor link
Dit heb ik ondertussen:

index.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
<?php
// index.php

require "Request.php";
require "Router.php";

$router = new Router;

$router->add(array("route" => "", "destination" => "welcome.php", "methods" => array("all")));
$router->add(array("route" => "help", "destination" => "help.php", "methods" => array("GET"))); // kan het zo goed "all" zijn (alle methods)
$router->add(array("route" => "contact", "destination" => "contact.php", "methods" => array("GET"))); // kan het zo goed "all" zijn (alle methods)
$router->add(array("route" => "submit", "destination" => "submit.php", "methods" => array("POST")));

// Ingewikkelder
$router->add(array("route" => "shop/product/info/", "destination" => "productInfo.php", "methods" => array("GET", "POST"));

$router->matchRequest(new Request);
?>

Router.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
42
43
44
45
46
47
48
49
50
51
52
53
<?php

class Router {
    
    private $_routes;
    private $_destination;
    private $_notFoundDestination = "notfound.php";
    
    public function add(array $route = array()) {
        
        $this->_routes[] = $route;
    }

    
    public function matchRequest(Request $request) {
        
        if($request->getArgument('route') == "") {
            
            $this->_destination = "welcome.php"; // Startpagina, normaal index.php
            $this->navigate();
            
        }
else {
            
            for($i = 0; $i < count($this->_routes); $i++) {
                
                if($this->_routes[$i]["route"] == $request->getArgument('route')) {
                    
                    if(in_array($request->getMethod(), $this->_routes[$i]["methods"]) || in_array("all", $this->_routes[$i]["methods"])) {
                        
                        $this->_destination = $this->_routes[$i]["destination"];
                        $this->navigate();
                        return;
                    }

                    
                    $this->notFound(); // verkeerde method
                    return;
                }
            }

            
            $this->notFound(); // Loop door alle mogelijke routes gedaan, niks gevonden
        }
    }

    
    public function navigate() {
        
        require $this->_destination;
    }

    
    public function notFound() {
        
        require $this->_notFoundDestination; // Error 404 pagina
    }
}

?>

Request.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
<?php
// Request.php

class Request {
    
    public function getMethod() {
        
        return $_SERVER['REQUEST_METHOD'];
    }

    
    public function getArgument($name) {
        
        return isset($_GET[$name]) ? $_GET[$name] : "";
    }
}


?>

- Je kunt bij het definieren van een route aangeven of deze werkt op alle methods, of alleen post of get methods.
- Je geeft bij de route de bestandsnaam (of pad naar een bestand), de route is daar onafhankelijk van

Graag hoor ik commentaar, en dat zal vast wel veel zijn. Want ik weet dat deze code niet perfect is. Toch wilde ik het laten zien.
Gewijzigd op 16/12/2013 20:51:40 door Mark Hogeveen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/12/2013 23:34:01
Quote Anchor link
je kan nog een stapje verder gaan met variabele routes zoals die ook in dit forum gebruikt worden:

http://www.phphulp.nl/php/forum/topic/mvc-routing/93198

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
<?php
$router
->add(array("route" => "forum/topic/:slug/:id", "destination" => "forum-showtopic.php", "methods" => array("all")));

// de controller
class ShowtopicController extends BaseController
{
    public function indexAction($slug, $id)
    {

        // test
        echo 'slug: ' . $slug . '<br>';
        echo 'id: ' . $id . '<br>';
    }
}

?>
Gewijzigd op 16/12/2013 23:47:01 door Frank Nietbelangrijk
 
Ozzie PHP

Ozzie PHP

17/12/2013 00:07:18
Quote Anchor link
@Frank, wat wordt bedoeld met "slug" en wat houdt methods "all" in?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/12/2013 00:38:38
Quote Anchor link
Ozzie een slug is een gedeelte van je url: bijvoorbeeld: hoe-kan-ik-grote-bestanden-uploaden

En je tweede vraag zou je aan Harry moeten vragen maar ik dacht dat het voor GET & POST staat.
 
Ozzie PHP

Ozzie PHP

17/12/2013 01:38:58
Quote Anchor link
>> Ozzie een slug is een gedeelte van je url: bijvoorbeeld: hoe-kan-ik-grote-bestanden-uploaden

Wat is dan de bedoeling van een slug? Geef je daar eigenlijk de action mee aan? Ik dacht dat wat jij een slug noemt gewoon bij de route hoort. Dus zeg maar zoiets:

route = "forum/topic/hoe-kan-ik-grote-bestanden-uploaden/:id"

Of... wacht even.. bedoel je dat het de (variabele) titel van een topic is? En zo ja, waarom dan niet:

route = "forum/topic/:title/:id"

>> En je tweede vraag zou je aan Harry moeten vragen maar ik dacht dat het voor GET & POST staat.

oké
 
Wouter J

Wouter J

17/12/2013 08:04:04
Quote Anchor link
>> Of... wacht even.. bedoel je dat het de (variabele) titel van een topic is? En zo ja, waarom dan niet:

Omdat we dat nou eenmaal de slug noemen. Dat komt omdat het niet de titel is, je hebt spaties vervangen met dashes, alles gelowercased en url-unsafe-characters eruit gehaald. Dat noemen we een slugified title, afgekort een slug.
 
Ozzie PHP

Ozzie PHP

17/12/2013 15:04:58
Quote Anchor link
Dankjewel voor je toelichting Wouter... maar stel nu dat het iemands username is, dus

forum/user/wouterj/123

Is "wouterj" dan ook een "slug"?

Wat versta je precies onder een slug? En is iedere variabele die in de url staat en niet een id is automatisch een slug?
 
Mark Hogeveen

Mark Hogeveen

17/12/2013 15:31:04
Quote Anchor link
Bij de methods staat "all" inderdaad voor POST, GET, maar ook voor PUSH of PULL.
Maar ik had verwacht dat mijn code eigenlijk een rommeltje was?

De Request class stelt eigenlijk niks voor. Ik zou niet weten wat ik er mee moet.
 
Wouter J

Wouter J

17/12/2013 17:05:47
Quote Anchor link
Ja, je code is een rommeltje. Maar als ik heel eerlijk ben had ik geen zin om weer met een nieuw persoon het process van een framework te doorlopen... Het zelf maken van een framework heb ik nog nooit begrepen, je komt dan alleen maar met meer vragen te zitten. Het gebruiken van een bekent framework zorgt ervoor dat je al 1001 voorbeelden en best-practises op het internet kunt vinden, daardoor leer je het een stuk gemakkelijker.

Maar ja, omdat je het anders zielig is dat je het verkeerde aanleerd :)
- Routes zijn ook objecten, een Route object dus.
- Het matchen van een URL zou je moeten overlaten aan het Route object, dat is degene die weet wat er in het Route object staat, de Router mag daar niks van weten. Als je het heel strict bekijkt ga je nog een stap verder en zeg je dat je niet wilt beperken op URLs, dan maak je nog een UrlMatcher klasse die het matchen regelt.
- Kijk eens naar php namespaces en autoloading
- De router is alleen voor het vinden van een route, het bepalen wat de not found route is en het bepalen wat de destination is is niet het doel van de Router.
- niet elke variabele die je in je klasse gebruikt is een property van die klasse. Slechts een paar zijn er een property.
- "$this->_destination = "welcome.php"; // Startpagina, normaal index.php" bepaal niks in de klasse zelf. Als je nu welcome.php aanpast moet je je klasse aanpassen, en klassen aanpassen voor zulke dingen is verboden. Je startpagina is gewoon een route zoals elke andere.
- Je gebruikt een hele vreemde manier wat betreft het laden van een controller. Wat doe je precies in een controller, ik heb niet het idee dat je daar iets van begrepen hebt (sorry).
- Je Request klasse is erg gelimiteerd. Het is nu gebonden aan: Het gebruik van superglobals. (gebruik nooit superglobals in een klasse!) Tevens is getArgument nu gebonden aan het gebruik van $_GET. Ik zou altijd werken met $_SERVER['PATH_INFO']
 
Mark Hogeveen

Mark Hogeveen

17/12/2013 17:45:53
Quote Anchor link
Ik heb inderdaad toch maar naar wat frameworks gekeken. (op github kun je de hele codes doorspitten)
Wat ik eigenlijk wel begrijp, maar niet het voordeel van inzie is het volgende:
Een simpele doorsnee route ziet er zo uit: /controller/action/paramaters
Het is dan de bedoeling dat de gevraagde controller wordt aangeroepen, en dat een methode van die controller wordt aangeroepen, die ook in de route staat.
controller/action/parameters =
album/bekijk_foto/1042 =
AlbumController/view/1042 zegt eigenlijk:

$AlbumController->view(1042);

- Wat als je meerdere controllers nodig hebt?
- Wat als je meerdere parameters hebt?

- Hoe doet mod_rewrite de GET variabelen normaal doorgeven? Daarmee bedoel ik: ?action=activate&user=123
Die zou kunnen worden herschreven naar /activate/123 of niet?
De namen van de parameters zijn weg! Hoe doe ik nou in mij PHP aangeven welke parameter ik wil? ($_GET['action'] kan toch niet meer? naam is weg)
Gewijzigd op 17/12/2013 17:47:14 door Mark Hogeveen
 
Dos Moonen

Dos Moonen

17/12/2013 19:50:45
Quote Anchor link
Het hangt er vanaf hoe geavanceerd je routes zijn. Kijk eens op http://kohanaframework.org/3.3/guide/kohana/routing#request-parameters om te zien hoe Kohana het beschikbaar stelt.
 

Pagina: « vorige 1 2



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.