看板 PHP 關於我們 聯絡資訊
有關這篇文章的起源請詳見上一篇。 目前的外掛修改進度大致追加了以下的一些功能。 第一個是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使用上覺得不夠方便或是設定麻煩的部份。 可以跟我說,我看看有沒有可能用外掛的形式來解決這些問題。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.180.243.44 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1443117065.A.A3F.html
fri13: 推 09/25 09:22
y2468101216: 推啊 09/25 11:50