CodeIgniter 進階設定

要弄到和之前直接寫php環境來說,前面幾個筆記還是不夠的,要外再弄一些設定,包含rewrite的部份,DB連接的部份,等等部份,都還要設定。我想應該會再寫一個筆記關於多語部份的設定,我也會放進來,這兩天在看了虛擬變數(seudo-variable)的資料,原來這是給樣版引擎看的,會影響效率,不知道多語系時,會不會需要用到這些虛擬變數。

一般來說,CodeIgniter的程式執行路徑如下
example.com/index.php/class/function/ID
老實說,真的是又臭又長,那個index.php看起來實在很礙眼,那就動手把把index.php拿掉吧!

1.先在httpd.conf 把remode 打開,並且重新啟動apache(這個網路上有教學文件,請自己找一下)
2.新增修改根目錄的.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
(其實這個設定法,有一點狠,我放在根目錄下的phpMyAdmin也不能用了,我只好改用其他第三方工具)

加入附檔名,修改application/config/config.php
$config[‘url_suffix’]=’.htm’;

如果前面rewrite有成功啟用,附加檔名的部份也沒有問題的話,原來的路徑是
example.com/index.php/products/view/shoes
==>變成
example.com/products/view/shoes
==>也可以用
example.com/products/view/shoes.htm
==>直接使用function方法來傳資料
exaple.com/products/shoes.htm
完全就是一整個搜尋引擎友善設定,每一個都能順利運作,當然如果考慮產品ID的話,設定就會變成(程式需修改)
example.com/product/shouse/12345.htm(第12345號鞋子產品)

以CodeIgniter的範例程式為例
localhost/welcome(controller)/welcome(view)/function/ID

資料庫設定是以群組的方式來設定的
$db[‘default’][‘hostname’] = “localhost”;
$db[‘default’][‘username’] = “root”;
$db[‘default’][‘password’] = “password1”;
$db[‘default’][‘database’] = “database_name1”;
$db[‘default’][‘dbdriver’] = “mysql”;
$db[‘default’][‘dbprefix’] = “”;
$db[‘default’][‘pconnect’] = TRUE;
$db[‘default’][‘db_debug’] = FALSE;
$db[‘default’][‘cache_on’] = FALSE;
$db[‘default’][‘cachedir’] = “”;
$db[‘default’][‘char_set’] = “utf8”;
$db[‘default’][‘dbcollat’] = “utf8_general_ci”;
$db[‘default’][‘swap_pre’] = “”;
$db[‘default’][‘autoinit’] = TRUE;
$db[‘default’][‘stricton’] = FALSE;

$db[‘test’][‘hostname’] = “localhost”;
$db[‘test’][‘username’] = “root”;
$db[‘test’][‘password’] = “passwrod2”;
$db[‘test’][‘database’] = “database_name2”;
$db[‘test’][‘dbdriver’] = “mysql”;
$db[‘test’][‘dbprefix’] = “”;
$db[‘test’][‘pconnect’] = TRUE;
$db[‘test’][‘db_debug’] = FALSE;
$db[‘test’][‘cache_on’] = FALSE;
$db[‘test’][‘cachedir’] = “”;
$db[‘test’][‘char_set’] = “utf8”;
$db[‘test’][‘dbcollat’] = “utf8_general_ci”;
$db[‘test’][‘swap_pre’] = “”;
$db[‘test’][‘autoinit’] = TRUE;
$db[‘test’][‘stricton’] = FALSE;

當我們用$this->load->database();(這個放在Controller中)時,會抓/application/config/database.php中的$active_group設定。而我們要連接第二個資料庫時,只要把原來的指令改成$this->load->database(‘test’); 可以了。

CI就會抓第二組的資料庫設定資料,進行資料庫連接,當然我們可以第一個資料庫連mysql,第二個資料庫連mssql,第三個資料庫連接oracle DB,這是沒有問題的。

有一點貼心的地方,就是在連線設定時,就把資料預設的編碼給考慮進去,讀資料比較不容易出現亂碼的問題,以前在寫php時,都要另外指定編碼。

這篇筆記最後我要說,CI這套Framework蠻貼心的,把很多東西都整合好了,要學的東西也很多,才能大大的把這套框架的功能給發揮出來,我想這也是appleboy說這樣coding style可以比較一致的原因。

看完CodeIgniter官方20分鐘寫出一個Blog系統的Video(視頻),看的出來,我的信心大增,雖然不及RoR(Ruby On Rail)的10分鐘Blog來的快(在CI框架中DB要自己手刻,不像RoR可以自動產生),輕量化的架構,不會對主機造成過重負擔,我想這也是一大優勢。看了一天的文件,真的蠻累的,是的,我不再年輕了~哈

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *