Feeds:
文章
留言

Archive for 七月 11th, 2014

有一個需求是兩個模組介面相同,可是內部實做不同,如何用最少的程式碼去替換成另一個模組

模組結構

/module

/v1

– WebService.php

– Function.php

– …

/v2

– WebService.php

– Function.php

– …

主程式

use \module\v1\WebService;

use \module\v1\Function;

$ws = new WebService();

$ws->doIt();

如果上述程式此時要替換成 v2 一個簡單的作法就是在程式的每個地方都改為 v2

不過太費工了,於是用了 autoload + class_alias 解決

完整的概念驗證代碼

核心就是下方的紅框處, 在 autoload 時,取得 v1 並在內部動態引入替換的檔案, 然後用 class_alias 將新的模組 namespace 替換掉舊的

然後程式執行結果就是 v2 … 不過缺點是,後續維護的人可能會 confuse

20140711-02

 

 

 

Read Full Post »