Re: [分享] 尚未定義名稱的ci擴充功能

作者: tkdmaf (皮皮快跑)   2015-09-25 01:51:02
有關這篇文章的起源請詳見上一篇。
目前的外掛修改進度大致追加了以下的一些功能。
第一個是controller實作IoC模式(原本只有做在widget)。
第二個是暫且只有models支援namespace但會有目錄的要求。
(不過根據設計,理論上應該是連libraries底下的都可以支援namespace)
(但目前的controller沒有支援,因為貌似要動到core,有空再研究)
第三個是將csrf是否驗證可以自由在controller中決定。
(Laravel是強制驗證post,不過有時不想用get也不想要驗證資料要改code,
CI本身的csrf也是那樣,除非你動設定檔,但是每次都要搞設定很麻煩,
所以找到他csrf的驗證方式後就用其他的方法來取代掉了。)
第四個,路由改成不支援直接呼叫controller,亦即你原本如果檔名叫做
UserController,你的網址可能像這樣:
hostname/UserContrller
我將他改成不允許如此的結構。
你必須去設定路由,但是ci本身的路由設計有缺陷,他變成你每個路由都要
詳細設定函式(就安全來說,非常嚴謹,但不方便,少了彈性)
基本上,在原本的$route設定的路由是照原本的機制。
但在同一份檔案我追加了$route_controller的設定。
當你如此設定時:
$route_controller = [
'user' => 'UserController'
];
這個user將完全取代UserController
舉例來說原本可能是:
hostname/UserController/run
現在會變成
hostname/user/run
第五個,雖然第四個加上了控制器的彈性設定,但是一但你的表單是走post的
格式時,將會強迫你必須在方法前面加上"post_"
舉例來說,你的表單用post送出的action是:
/UserController/login
但你在實做method時,必須為:
function post_login(){
}
這個的好處就是當你在設計時,你會知道這個函式就是要接收表單的。
而且也避掉不當的post行為。
感覺越來越有Laravel的風格?
我覺得這樣說雖不能說不無道理。
但其實只是覺得ci在一些設計上還是不太足夠。
不過在這次整個外掛設計過程中,果然ci的原始設計還是夠彈性的……
夠讓你想上外掛時還能在不動核心的情形下做彈性修改。
當然,這外掛到這階段也算是實驗階段還沒完成。
不過我自己用起來是覺得還算得上OK。
如果你有ci使用上覺得不夠方便或是設定麻煩的部份。
可以跟我說,我看看有沒有可能用外掛的形式來解決這些問題。
作者: fri13 (思考跳tone記性差)   2015-09-25 09:22:00
作者: y2468101216 (芸)   2015-09-25 11:50:00
推啊

Links booklink

Contact Us: admin [ a t ] ucptt.com