Framework-системы. Теоретический вопрос.

watt

Guest
Framework-системы. Теоретический вопрос.

Framework-системы. Теоретический вопрос.

Приветствую.

Говорю прямо суть траблы – взялся делать ядро несложной (или сложной?) framework для собственных нужд, полностью игнорируя отсутствие опыта. :) Ну, разве что прочел статью Дениса Баженова в PHPInside #9, что и так понятно :). Сразу же столкнулся с интересной проблемой, точнее вопросом – как, по какому алгоритму, следует принимать решение о загрузке того или иного приложения – ведь в более-менее объемном веб-сайте отсутствует жесткая структура директорий.

Например, если бы структура была такой:
/index.php
/articles/56.php
/forum/index.php
/forum/topic.php

То все было бы просто - .htaccess, mod_rewrite, isset(), бла-бла-бла. На самом деле, это все что я придумал – ограничить количество уровней директорий, скажем, тремя и для каждого уровня, передавать в переменную его имя, например при пути
/games/reviews/half_life_2.php
это будет выглядеть так: $level1 = ‘games’; $level2 = ‘reviews’; $level3 = ‘half_life_2’;
Далее ядро по этой структуре запрашивает соответствующее приложение – games/reviews.php, передавая последнюю переменную – half_life_2 в качестве ключа для запроса к БД. Изврат, конечно, полный, но работать будет.

А как быть в случае с такой структурой?
/index.wbp
/games/half_life_2/review.wbp
/games/half_life_2/review/print/plain.wbp
/games/half_life_2/review/print/createpdf.wbp
/games/half_life_2/preview.wbp
/games/half_life_2/screenshots/16
/xtra/mail/sendtofriend/review/half_life_2/
/games/cold_fear/info.wbp
/mobiles/catalog/motorola_v600.wbp
/mobiles/motorola_v600/review.wbp
/community/messageboard/
/community/messageboard/profile.php?user=55555
/xtra/advertising/adspecs/
/xtra/links/
/xtra/calendar/

То есть, когда заранее неизвестно, какой из уровней является командами framework-ядра, обозначающими путь для загрузки приложения, а какой – ключами, переменными для использования внутри самого приложения.
 

Tor

Новичок
если неизвестны параметры, то как можно работать

задай жестко, что первый уровень - то-то, второй - то-то и так далее

или создай списки валидных параметров, которые потом можно будет принимать независимо от его положения в запросе - но опять же, зачем?
 

inTox

вёбных дел мастер
есть мнение, что команды ядра в урле передавать не следует.

товарищ watt. Вы гоните. Точнее не догоняете: "принимать решение о загрузке того или иного приложения" следует по мере необходимости. то, что написано в строке запроса может никак не соотноситься с физической файловой структурой сервера. Поэтому
"/xtra/mail/sendtofriend/review/half_life_2/" следует рассматривать как путь в дереве сайта до конкретного объекта, а уж что это за объект и что ему нужно определяется в третьем месте.

И отцепитесь от мод_реврайт, почитайте про Files_Match
 

Alexandre

PHPПенсионер
Ну, разве что прочел статью Дениса Баженова в PHPInside #9
На сколько мне помнится, что доклад на эту тему делал Дмитрий Попов

у меня во framework вообще, сделано три директории:
/model
/view
/templates
соответственно для классов:
Модели: myname.model.php
Представления: myname.view.php
и шаблоной
Контролер запросов находится в index.php, хотя так же может быть в любом др. файле (для улучшения индексации).

Далее запрос анализируется и по соответствующему экшену инклудится соотетствующий класс модели и представления.
 
Сверху