看板 PHP 關於我們 聯絡資訊
大家好,我想要在 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
dlikeayu: 寫個model->load 規則只吃你想吃的參數就好,另外帶csrf 08/27 00:08