Ik heb een tijdje gewerkt met het PHP framework Laravel welke gebruik maakt van een handig routing mapping systeem. Hiermee kan je vooraf routes / url definiƫren. Nu ben ik bezig met het maken van een eigen mvc om mijn PHP kennis verder te ontwikkelen.


Ik heb een router.php bestand waar ik van te voren al mijn routes in zet.

Routes.php


Route::get("/", "HomeController@index");
Route::get("/product/{id}", "ProductController@getProductById");
\

In dit voorbeeld heb ik twee GET routes. De eerste parameter is de url de tweede parameter is de
controller en methode. In de eerste parameter zie je bv staan: /product/{id} waar {id} een placeholder
is voor een id in de url.

Nu zit ik met het volgende probleem. Het is de bedoeling dat ik door alle routes heen loop en deze moet controleren op de binnenkomende URL. Alleen zijn het twee verschillende urls


echo $url = $_SERVER["REQUEST_URI"];
// resultaat /product/2

// route = /product/{id}


Ik kan d.m.v preg_match_all wel de {} uitlezen


preg_match_all('/\\{(.*?)\\}/', '/product/{id}', $matches);

// print matches
echo '<pre>';
	print_r($matches);
echo '</pre>';

// Resultaat van print
Array
(
    [0] => Array
        (
            [0] => {id}
        )

    [1] => Array
        (
            [0] => id
        )

)


Nu is mijn vraag of iemand mij kan helpen hoe dit nu werkt. Wat mis ik en waar zal ik moeten beginnen.

Reageren