CI設定檔架構:
/index.php
/application/config/*
由於設定項繁多,這邊只說明重要設定。
/index.php
Line 56: 設定環境(修改最後方development
)
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
/application/config/autoload.php
設定自動載入
如果要自動載入名為url
的helper
$autoload['helper'] = array('url');
applcation/config/config.php
Line 26:
$config['base_url'] = 'http://example.com'; //網站網址
Line 38:
$config['index_page'] = ''; //index.php名稱(已做URL rewrite所以留空)
application/config/database.php
設定資料庫連線
$db['default'] = array( //設定連線名稱(default)
'dsn' => '', //設定連接字串(若設定此項則hostname, username, password, database無須設定)
'hostname' => 'localhost', //資料庫主機
'username' => '', //資料庫使用者名稱
'password' => '', //資料庫使用者密碼
'database' => '', //資料庫名稱
'dbdriver' => 'mysqli', //連線用Driver(mysqli或pdo)
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
連線時,使用$connection = $this->load->database('default', true);連線
application/config/routes
設定路由
保留路由
$route['default_controller'] = 'welcome'; //預設的Controller
$route['404_override'] = ''; //404執行的Controller
$route['translate_uri_dashes'] = FALSE; //將網址中的-(連字號)轉為_(底線)去呼叫Controller
一般路由
//規則
$route['網址']['HTTP請求方式'] = '呼叫的Controller';
//範例
//當[GET] api/v1/user/(任意文字)時,呼叫api/v1/user/get/(任意文字)
$route['api/v1/user/(:any)']['get'] = 'api/v1/user/get/$1';
//當[GET] api/v1/data/(任意數字)時,呼叫api/v1/user/data/(任意數字)
$route['api/v1/data/(:num)']['get'] = 'api/v1/data/get/$1';
//當[POST] api/v1/user/時,呼叫api/v1/user/new
$route['api/v1/user/']['post'] = 'api/v1/user/new';
--
今天就到這邊拉~有問題或建議歡迎留言!
application/config/database.php
我對所有框架都有一個疑問,
'hostname' => 'localhost', //資料庫主機
'username' => '', //資料庫使用者名稱
'password' => '', //資料庫使用者密碼
'database' => '', //資料庫名稱
這裡到底要怎麼設?假如,我會因登入者不同而連接其專屬資料庫,比如,若A登入,則連接 aDbase,b登入則連接 bDbase , 甚至為了分流,aDbase 走 ahost , bDbase 走 bhost , 這如何處理?
我的觀念可能不太正確,因為我沒有用過框架,我的這些參數都是活的,不會設成固定的,一直轉不過來。
你可以同時設定多組資料庫連線!
$db['db1'] = array( //設定連線名稱(default)
'dsn' => '', //設定連接字串(若設定此項則hostname, username, password, database無須設定)
'hostname' => 'datacenter1.example.com', //資料庫主機
'username' => 'user', //資料庫使用者名稱
'password' => '1234', //資料庫使用者密碼
'database' => 'test', //資料庫名稱
'dbdriver' => 'mysqli', //連線用Driver(mysqli或pdo)
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
$db['db2'] = array( //設定連線名稱(default)
'dsn' => '', //設定連接字串(若設定此項則hostname, username, password, database無須設定)
'hostname' => 'datacenter2.example.com', //資料庫主機
'username' => 'user', //資料庫使用者名稱
'password' => 'test2', //資料庫使用者密碼
'database' => 'test', //資料庫名稱
'dbdriver' => 'mysqli', //連線用Driver(mysqli或pdo)
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
連線時再用$db = $this->load->database('db1',true);
連線到db1$db = $this->load->database('db2',true);
連線到db2
老師不通啦,
那 100 個 user 不就要設 100 組?
它本質上其實還是一般的php檔案,所以是可以在裡面帶變數的阿!
感恩,理解啦!