iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0

CI設定檔架構:

  • /index.php
  • /application/config/*

由於設定項繁多,這邊只說明重要設定。

  • /index.php

    Line 56: 設定環境(修改最後方development)

    define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
    
    • development 開發模式,顯示所有錯誤
    • testing 測試模式,隱藏所有錯誤
    • production 生產模式,隱藏所有錯誤
  • /application/config/autoload.php 設定自動載入

    如果要自動載入名為urlhelper

    $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';
    

--
今天就到這邊拉~有問題或建議歡迎留言!


上一篇
[Day 3] 架設環境
下一篇
[Day 5] 靜態頁面
系列文
三十天攻略RESTful API (使用codeigniter3)15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
ckp6250
iT邦好手 1 級 ‧ 2020-09-21 15:51:29

application/config/database.php

我對所有框架都有一個疑問,

'hostname' => 'localhost',  //資料庫主機
'username' => '',           //資料庫使用者名稱
'password' => '',           //資料庫使用者密碼
'database' => '',           //資料庫名稱

這裡到底要怎麼設?假如,我會因登入者不同而連接其專屬資料庫,比如,若A登入,則連接 aDbase,b登入則連接 bDbase , 甚至為了分流,aDbase 走 ahost , bDbase 走 bhost , 這如何處理?

我的觀念可能不太正確,因為我沒有用過框架,我的這些參數都是活的,不會設成固定的,一直轉不過來。

看更多先前的回應...收起先前的回應...
Franky Chen iT邦研究生 3 級 ‧ 2020-09-21 16:30:20 檢舉

你可以同時設定多組資料庫連線!

$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

ckp6250 iT邦好手 1 級 ‧ 2020-09-21 16:42:13 檢舉

老師不通啦,
那 100 個 user 不就要設 100 組?

Franky Chen iT邦研究生 3 級 ‧ 2020-09-21 21:41:56 檢舉

它本質上其實還是一般的php檔案,所以是可以在裡面帶變數的阿!

ckp6250 iT邦好手 1 級 ‧ 2020-09-22 05:07:22 檢舉

感恩,理解啦!

我要留言

立即登入留言