[討論] Codeigniter 實現 DI 精神

看板PHP作者 (ChaN)時間8年前 (2015/08/25 12:03), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
大家好,我想要在 CI 實作 Dependency Injection 的理念,其實就是希望程式碼處裡可以分離 加新東西時不影響主要的 code,以金流當作範本,金流有很多付費方式 像是 WebAtm,Credit、Paypal,要達成程式抽離以及介面化設計目前我的布局如下 提出來希望可以跟各位交流看怎麼改進會比較好 application\controllers\Billing.php <?php class Billing extends CI_Controller { public function payment($payment = null, $method = null) { $this->load->library($payment); $this->{$payment}->{$method}(); } } application\libraries\Credit.php <?php include APPPATH.'interfaces\'.BillingInterface.php; class Credit implements BillingInterface { private $ci = null; public function __construct() { $this->ci =$ get_instance(); } public function process() { } } application\interfacecs\BillingInterface.php interface BillingInterface { public function process(); } 因為 CI 沒有像 Laravel 的 autoload 以及 namespace use 設計,所以我把付費方式設計在 libraries 裡面調用 因此只要有新的付費內容我只要透過 payment 去引用 library 即可 網址會變成 http://api.xxx.com/billing/payment/credit/do_something 這樣的設計除了 post 以外,你沒辦法預測會帶多少變數進來,所以如果需要 get 帶參數妥協還是用 ? 的方式,像是 http://api.xxx.com/billing/payment/credit/check?price=1000&id=A1234 我是覺得還 ok,希望大家可以給予意見修正,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.144.228 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1440475405.A.090.html

08/27 00:08, , 1F
寫個model->load 規則只吃你想吃的參數就好,另外帶csrf
08/27 00:08, 1F
文章代碼(AID): #1Ls-aD2G (PHP)