Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 16.12.2015 15:48 / 16.12.2015 15:49
В предыдущих постах Я как раз публиковал код, в котором разбивал $request:uri по слэшам.И спрашивали почему ваш громоздкий код не работает так, как вы ожидаете.
Потом находил соответствия полученным значениям в БД, если они были, передавал эти параметры обработчику, который выдавал содержимое.Вам посоветовали так не делать и предложили более универсальную схему, примеры которой есть как в известных фреймворках, так и на Парсере — в pf.
Я пытаюсь повторить текст в код, начинаю с регулярных выражений, Вы пишите что так сложно не нужно, а Я с учетом расширения это делаю.Вы разбираете не то, что нужно.
@main[] ^dispatch[$form:url] @dispatch[URL][locals] $dispatchers[^table::create{handler trap}] $form[^hash::create[$form:fields]] ^form.delete[url] $URL[^URL.trim[both;/]] $URLs[^URL.split[/]] ^URLs.menu{ $handler[^if(def $handler){$handler}^_upperFirstLetter[$URLs.piece]] $_URL[^if(def $_URL){$_URL/}$URLs.piece] ^dispatchers.append{on$handler ^URL.mid(^_URL.length[] + 1)} } ^dispatchers.sort(^dispatchers.line[])[desc] $dispatched(false) ^dispatchers.menu{ $handler[$[$dispatchers.handler]] ^if($handler is junction){ ^handler[ $.trap[$dispatchers.trap] $.slug[^dispatchers.trap.left(^dispatchers.trap.pos[/])] $.form[$form] ] $dispatched(true) ^break[] } } ^if(!$dispatched){ ^onNotFound[ $.trap[$URL] $.slug[^URL.left(^URL.pos[/])] $.form[$form] ] } @_upperFirstLetter[string][locals] $result[^string.match[(.)(.+);]{^match.1.upper[]^match.2.lower[]}] @onNews[params] onNews ^json:string[$params] @onNewsBest[params] onNewsBest ^json:string[$params] @onNewsBest2015[params] onNewsBest2015 ^json:string[$params] @onNotFound[params] onNotFound ^json:string[$params]