Ваша лучшая ставка, вероятно, вариант 3, поместить его в конструктор вашего базового контроллера, возможно, MY_controller или что бы вы ни расширяли Controller (теперь CI_Controller с официальным выпуском CI2.0)вы получаете расширение, возможно, нет причины иметь таблицу базы данных, поскольку вы можете просто сохранить ее в файле конфигурации
Я бы сделал что-то подобное ... в MY_Controller.php (это синтаксис CI 2.0)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
$subdomain_arr = explode('.', $_SERVER['HTTP_HOST'], 2);
$subdomain_name = $subdomain_arr[0];
$this->load->config('sub_prefix');
$pre_arr = $this->config->item('prefixes');
/* Check to make sure the subdomain name is in the config array */
$this->prefix = isset($pre_arr[$subdomain_name]) ? $pre_arr[$subdomain_name] : '';
}
Затем в файле конфигурации (sub_prefix.php)
<?php if (! defined('BASEPATH')) exit('No direct script access');
$config['prefixes'] = array('subdomain1' => 'sub1',
'stackoverflow' => 'sf');
Таким образом, вам не нужно каждый раз выполнять дополнительный запросстраница загружается для чего-то относительно статического ... если вы дойдете до точки, где будет гораздо больше информации, которая вам понадобится, кроме префикса, то имеет смысл сделать это с базой данных
Теперь вы можете просто использовать префикс $ this-> в любом из представлений, контроллеров или моделей, которые вы будете использовать ... лучший способ сделать это для чего-то, что активно используется во всех ваших приложениях.Тион.