Допустим нужны web/wap версии сайта. Каким образом писать скрипт? Использовать общие функции думаю не получится
22 Апр 2011, 9:35http://detectmobilebrowser.com/download/php делаешь код на подобии этому и редиректишь на нужную версию сайта
22 Апр 2011, 10:16НЕЗНАЙКА, код сайта, его основной код, должен содержаться в моделях. Модели это такие объекты, каждый из которых отвечает за своё поведение и содержит в себе public-методы, которые будут вызываться из любого скрипта одинаково.
Например, чтобы изменить статус юзера, нужно вызвать метод ChangeStatus у модели User. И тому подобное.
Файлы моделей обычно хранятся в отдельном каталоге.
При обращении к точке входа (index.php), происходит анализ запроса, и вызывается нужный контроллер (~ёр - по вкусу).
Контроллер это тоже объект. Его задача состоит в том, чтобы данные из строки запроса передать в виде параметров в методы модели. А выданный моделями результат контроллер передаёт Отображению. Благодаря такой просто логике, методы контроллера выглядят "тонкими", и это хороший признак.
Отображение - объект, который решает, как ему отобразить результаты на странице.
С таким подходом исчезает логика "одна страница - один скрипт", и для разных версий сайта тебе нужно будет лишь поменять Отображения (это дизайн) и, в некоторых местах, контроллеры (хотя, не обязательно). А самый главный и самый объёмный код - модели - менять не придётся.
Подробнее: http://www.yiiframework.com/doc/guide/1.1/ru/basics.best-practices
Да да, нужна структура, а не редирeкт
С классами я не знаком так 'близко'
Но общий смысл такой же сложился. Все таки там не так просто.
Например, в веб версии нужно две колонки, а модель обрабатывает лишь для одного вида. То есть не все данные. Как быть?
НЕЗНАЙКА, модель не обрабатывает колонки, колонки у модели получает контроллер. Модель не должна снисходить до таких приземлённых деталей, как отображение данных.
22 Апр 2011, 10:48Не столь важно сейчас, я о самой сути. Для веба нужны другие данные, а обрабатывает один контроллер
22 Апр 2011, 10:52Да, тоже думаю над этим.
В вебе просто напросто больше данных нужно выдавать => больше методов в моделях.
Мб их наследовать?
От вапа к вебу.
И надо учитывать, что может быть не только 2 версии сайта.
НЕЗНАЙКА, так сделай два контроллёра, делов то. Так обычно и делают.
добавлено спустя 1 минуту:
Replikon, модель должна содержать методы "на все случаи жизни". Чтобы этих методов не плодилось и, самое главное, чтобы они ни в коем случае не повторялись, контроллер должен эффективнее обрабатывать данные и строить запросы к моделям.
добавлено спустя 3 минуты:
Наследованием проще переписывать контроллеры. А модели не всегда удаётся (да и не стоит стремится) сочетать наследованием. В моделях лучше использовать [url=http://ru.wikipedia.org/wiki/Делегирование_(программирование)]делегирование[/url].