[討論] Codeigniter 實現 DI 精神
大家好,我想要在 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
08/27 00:08, 1F