你最好的選擇可能是選項3,把它放在你的基地位指示的構造,大概MY_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->前綴你將會使用......最好的方式來處理那些遍佈你的應用程序的東西。
是不是通過php DEFINE設置它們是最好的方式?我相信一旦設定,它們在腳本執行過程中永遠不會改變。 – 2011-01-31 00:28:33
您的問題可能有點誤導,因爲您在標題中詢問CodeIgniter視圖,但在詢問如何將信息加載到M,V和C中的所有問題中。此方法會將這些變量全局加載到加載的視圖中由這個控制器。 – jondavidjohn 2011-01-31 01:26:53