Общие компоненты нескольких приложений

Есть несколько приложений расположенных на одном домене, приложение вызывается в зависимости от запрошенного домена (домены это алиасы основного домена). Каким образом можно сделать общие виджеты и модули, а так же лейоуты для всех приложений, что бы не копировать один и тот же код во всех приложениях.

Сделать общей директорию protected?

не вариант.

Необходимо, что бы домен===приложению, т.е. у каждого домена свой protected.

Как мне сейчас видится лучший вариант это создать общее приложение или по крайней мере директорию где хранятся общие модули, но не могу понять как автоматизировать процесс вызовов этих модулей. Например, domain1.org/?r=map и domain2.org/?r=map ссылаются на схему проезда, при этом весь набор виджетов, модулей, лейауты принадлежат соответствующему приложению, а компонент (контроллёр, виды, модели) "map", находится во внешнем приложение и подгрузка автоматически.

А контроллеры, модели и прочее одинаковые для разных доменов?

Если да, то можно сделать так:

  1. переместить все в одну папку /protected и соответствующие подпапки

  2. в index.php сделать так:




<?

if($_SERVER['HTTP_HOST']=='domen1.ru' or $_SERVER['HTTP_HOST']=='www.domen1.ru')

{

	$config=dirname(__FILE__).'/protected/config/domen1.php';

}

elseif($_SERVER['HTTP_HOST']=='domen2.ru' or $_SERVER['HTTP_HOST']=='www.domen2.ru')

{

	$config=dirname(__FILE__).'/protected/config/domen2.php';

}

else

{

	$config=dirname(__FILE__).'/protected/config/domen3.php';

}

$yii=dirname(__FILE__).'/protected/framework/yii.php';

require_once($yii);

Yii::createWebApplication($config)->run();

?>


В конфигах для каждого домена указать разные пути для views (т.е. разнести их).



p.s. У меня так работает несколько сайтов на одном хостинге.

В том то и дело, что набор контроллёров и др. разное. Например, на domain.org "самая… при самая…"главная страница, на domain1.org - недвижимость, а на domain2.org - услуги ремонта. И всё это консолидировано под единым сайтом. Но при этом остаются общими такие компоненты как "схема проезда", "личный кабинет" и др.

  • index.php [color="#2E8B57"]// на этот скрипт ссылаются все алиасы[/color]

  • framework

  • sites [color="#2E8B57"]// здесь расположены все приложения (сайты)[/color]

[list]

  • site [color="#2E8B57"]// основной сайт domain.org[/color]

[list]

  • protected

  • index.php

[*]site1 [color="#2E8B57"]// например, недвижимость - domain1.org[/color]

  • protected

  • index.php

[*]site2 [color="#2E8B57"]// например, ремонтные работы (каталог) - domain2.org[/color]

  • protected

  • index.php

[/list]

[/list]

Куда мне вляпать общие компоненты. В действительности всё осложняется тем, что таких приложений 5-7 и они имеют разный набор общих компонентов.

Выносим всё общее в одну папку , потом при необходимости делаем симлинки на нужные компоненты.

В API написано, что работает на 5.3 у меня к сожалению 5.2. Можно по этому поводу чде нибудь поподробнее почитать?

Что именно работает только на 5.3? Lex имел в виду символические ссылки в юникс системах, которые можно инклюдить как обычные файлы, и от версии пхп это не зависит.

Если работаете под Linux , есть стандартая директория /usr/share/php, куда можно устанавливать свои компоненты, Yii в том числе. Эта директория прописана по умолчанию в php include path, потому полный путь указывать необязательно при подключении, что обеспечивает лучшую переносимость кода. Подключении файлов будет как в zend framework примерно.