Xwab
Форумыnavigate_nextПрограммирование на PHP

Две версии сайта
Сообщения
НЕЗНАЙКА

Допустим нужны web/wap версии сайта. Каким образом писать скрипт? Использовать общие функции думаю не получится

22 Апр 2011, 9:35
Mars

http://detectmobilebrowser.com/download/php делаешь код на подобии этому и редиректишь на нужную версию сайта

22 Апр 2011, 10:16
JESOD

Mars, автор о другом просит, как я понял. О структуре самого сайта.

22 Апр 2011, 10:19
OZ_

НЕЗНАЙКА, код сайта, его основной код, должен содержаться в моделях. Модели это такие объекты, каждый из которых отвечает за своё поведение и содержит в себе public-методы, которые будут вызываться из любого скрипта одинаково.
Например, чтобы изменить статус юзера, нужно вызвать метод ChangeStatus у модели User. И тому подобное.

Файлы моделей обычно хранятся в отдельном каталоге.

При обращении к точке входа (index.php), происходит анализ запроса, и вызывается нужный контроллер (~ёр - по вкусу).

Контроллер это тоже объект. Его задача состоит в том, чтобы данные из строки запроса передать в виде параметров в методы модели. А выданный моделями результат контроллер передаёт Отображению. Благодаря такой просто логике, методы контроллера выглядят "тонкими", и это хороший признак.

Отображение - объект, который решает, как ему отобразить результаты на странице.

С таким подходом исчезает логика "одна страница - один скрипт", и для разных версий сайта тебе нужно будет лишь поменять Отображения (это дизайн) и, в некоторых местах, контроллеры (хотя, не обязательно). А самый главный и самый объёмный код - модели - менять не придётся.

Подробнее: http://www.yiiframework.com/doc/guide/1.1/ru/basics.best-practices

22 Апр 2011, 10:37
НЕЗНАЙКА

Да да, нужна структура, а не редирeкт
С классами я не знаком так 'близко' Но общий смысл такой же сложился. Все таки там не так просто.
Например, в веб версии нужно две колонки, а модель обрабатывает лишь для одного вида. То есть не все данные. Как быть?

22 Апр 2011, 10:44
OZ_

НЕЗНАЙКА, модель не обрабатывает колонки, колонки у модели получает контроллер. Модель не должна снисходить до таких приземлённых деталей, как отображение данных.

22 Апр 2011, 10:48
НЕЗНАЙКА

Не столь важно сейчас, я о самой сути. Для веба нужны другие данные, а обрабатывает один контроллер

22 Апр 2011, 10:52
Replikon

Да, тоже думаю над этим.
В вебе просто напросто больше данных нужно выдавать => больше методов в моделях.
Мб их наследовать?
От вапа к вебу.
И надо учитывать, что может быть не только 2 версии сайта.

22 Апр 2011, 10:58
OZ_

НЕЗНАЙКА, так сделай два контроллёра, делов то. Так обычно и делают.
добавлено спустя 1 минуту:
Replikon, модель должна содержать методы "на все случаи жизни". Чтобы этих методов не плодилось и, самое главное, чтобы они ни в коем случае не повторялись, контроллер должен эффективнее обрабатывать данные и строить запросы к моделям.
добавлено спустя 3 минуты:
Наследованием проще переписывать контроллеры. А модели не всегда удаётся (да и не стоит стремится) сочетать наследованием. В моделях лучше использовать [url=http://ru.wikipedia.org/wiki/Делегирование_(программирование)]делегирование[/url].

22 Апр 2011, 11:10
robott

Загрузили научными словами, но ничего толком не сказали

22 Апр 2011, 14:06
Ответить на тему