⊗ppMVDFmRr 25 of 35 menu

Разработка на рутер в собствен MVC фреймуърк

Сега трябва да разработите рутер. Той представлява клас, който ще взима масив от маршрути, взима заявления URL, и определя кой от маршрутите съответства на дадения URL. След намиране на съответстващия маршрут нашият клас трябва да получи части от URL, съответстващи на параметрите на маршрута.

Нека нашият рутер връща като резултат обект от клас Track, съдържащ името на контролера, който трябва да бъде извикан за дадената заявка, името на действието и параметрите от URL.

Нека нашият клас Track има свойства controller, action и params, достъпни само за четене:

<?php namespace Core; class Track { private $controller; private $action; private $params; public function __construct($controller, $action, $params) { $this->controller = $controller; $this->action = $action; $this->params = $params; } public function __get($property) { return $this->$property; } } ?>

Пример

За пример, нека в адресната лента е въведено /test/1/2/. Нека имаме маршрут, съответстващ на този адрес:

<?php new Route('/test/:var1/:var2/', 'test', 'index'); ?>

Това означава, че името на контролера ще бъде test, името на действието - index, а масивът от параметри ще бъде следният:

<?php ['var1' => 1, 'var2' => 2] ?>

Целта на този урок е да напишем клас Router, връщащ обект от клас Track. Останалото все още не ни засяга. Да започнем с писането на този клас.

Практически задачи

Копирайте кода на моя клас Track и го поставете във файл /core/Track.php.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне