2008年04月8日

PHPUnit 自定 TestSuite 輸出樣式,輸出為 HTML 網頁

Tags: phpunit tdd

PHPUnit 預置了一個純文字型式的 TextUI Runner,在大多數情形下,它足夠應付我們的需求。不過,當我想要把 TestSuite 放到專案網頁上,讓小組成員 - 特別是 PM - 可以上網查看立即的測試結果時,那個文字型式的 TextUI Runner 就顯得太簡略了。至少要把測試工作及結果輸出成 HTML 的條列式清單,最好還加上顏色區別成功或失敗。

所幸 PHPUnit 提供了良好的擴充性,要自定一個可以將測試內容輸出為 HTML 網頁的 HTML Runner 相當簡單。

...繼續閱讀

Posted by shirock at 樂多Roodo!10:37回應(1)引用(0)

2008年03月27日

延續《分割程式功能以及 mix-in 和 include》的討論

Tags: php mix_in

延續《分割程式功能以及 mix-in 和 include》的討論。tokimeki 說: 既然已經在外部定義了function,直接調用function不就好了嗎?

我直接委派函數的原因是 PHP 語法限制。用函數比用靜態成員函數(類別方法)或一般成員函數(個體行為)要容易寫。請看我在另一篇的回應: 這牽涉到 PHP 的動態能力限制。

...繼續閱讀

Posted by shirock at 樂多Roodo!13:51回應(5)引用(0)

2008年03月25日

如何替使用 CodeIgniter framework 開發的程式進行 PHPUnit3 的單元測試

Tags: CodeIgniter phpunit

先說一下 PHP framework 的事,我個人很想用 Zend Framework 。但我服務的公司的軟體是用 PHP4 開發的,所以主機也是跑 PHP4。由於遲遲不見有更新到 PHP5 的計劃,所以我現階是用 CodeIgniter framework 在寫新功能。

另一方面,我又習慣用 PHPUnit 進行測試工作。為此,我必須要弄一個簡單的測試框架出來,才能以 PHPUnit 去測試我用 CodeIgniter framework 寫的功能單元。

...繼續閱讀

Posted by shirock at 樂多Roodo!18:27回應(0)引用(0)

關於分割程式功能以及 mix-in 和 include

Tags: php reflection mix-in include
最近碰到一個分割程式功能的問題,不得已必須用到反映的功能,寫了一個簡單的抽象插件類別 http://blog.pixnet.net/HACGIS/post/15612808。 不知道你有沒有更好的解法? tokimeki

關於這個問題,我是用所謂「混成(mix-in)」的概念實踐。先前我寫過2篇: PHP 實踐 mix-in 概念PHP 實踐 mix-in 概念 part 2

另外一位網友是用 include ,參考: mix-in?。嚴格來說那不是 mix-n ,稍後說明。這有3個缺點。

...繼續閱讀

Posted by shirock at 樂多Roodo!17:59回應(3)引用(0)

2008年02月21日

Extend core libraries of CodeIgniter to detect the request file type and load applicable view

Tags: CodeIgniter

I extend core libraries of CodeIgniter to detect the request file type and load applicable view. The other way is use URI Route, see '文件格式之 URI Route Rule 與 CodeIgniter 之實作示範'.

What I want to do is that if user request 'http://localhost/ci/blogs/index.xml', it will try to load a view for XML. In other cases:

  • If request 'blogs/index', load 'views/index.php' to render HTML document (default type).
  • If request 'blogs/index.xml', load 'views/index.xml.php' to render XML document.
  • If request 'blogs/index.pdf', load 'views/index.pdf.php' to render PDF document.
  • and so on.
...繼續閱讀

Posted by shirock at 樂多Roodo!15:33回應(0)引用(0)

2008年02月20日

文件格式之 URI Route Rule 與 CodeIgniter 之實作示範

Tags: php CodeIgniter

我習慣將控制元件行為的最後一個參數,設為文件(呈現內容)的"格式",如使用者想要 XML 格式的回傳內容,則傳入 'xml'。例如:

程式定義:
  class Controller {
    function method( docType ) {
      // return result as a XML document.
    }
  }
  var controller = new Controller;

調用控制項時的 URI:
  controller/method/xml
  # invoke  controller->method('xml');

不過,我更喜歡將"文件格式"這個參數放在 URI 的副檔名部份。這部份我放在文章後段。

...繼續閱讀

Posted by shirock at 樂多Roodo!16:49回應(0)引用(1)

2008年02月14日

PHP如何取得虛擬主機名稱及瀏覽器適用的地區語文資訊

在 HTTP 協定(RFC2612) 中提到, Host 可用於得知使用者存取主機資源時會使用的主機名稱,供 HTTP Server 判斷虛擬主機設置。Accept-Language 可用於得知使用者的地區語文清單。服務者可根據此清單內容,呈現最適用於使用者的地區語文內容。

在 PHP 中,可藉由全域變數 $_SERVER['HTTP_HOST']$_SERVER['SERVER_NAME'] 取得 Host 內容。$_SERVER['HTTP_ACCEPT_LANGUAGE'] 取得瀏覽器適用的語文清單。

HTTP_HOST, SERVER_NAME should be the same. However, SERVER_NAME looks like only available in Apache2.

...繼續閱讀

Posted by shirock at 樂多Roodo!16:32回應(2)引用(0)

2008年01月16日

使用 CodeIgniter 作為開發框架並預期以 GPL 散佈應用軟體的作法

Tags: php CodeIgniter gpl

CodeIgniter 使用自定的授權書, CodeIgniter License Agreement。基於授權內容, CodeIgniter 不能被 GPL 傳染 copyleft 特性。(因為 GPL 的授權方式使其他使用 GPL 源碼的軟體也必須採 GPL 散佈,故人們戲稱這是一種病毒傳染行為)。基於此種限制,我個人認為不能將 CodeIgniter 包裝為我們應用軟體的一部份。CodeIgniter 和我們的應用軟體應該分開散佈。亦即,使用者必須另外下載取得 CodeIgniter 源碼。

故我寫下這份記錄,以說明如何將採用 GPL 授權書的源碼與 CodeIgniter 的源碼隔離散佈。

有些人認為不必如此做。 CodeIgniter 的作者就認為沒有問題。不過我還是傾向於將兩者分開散佈,不將 CodeIgniter 包裝在一起。

...繼續閱讀

Posted by shirock at 樂多Roodo!17:32回應(0)引用(0)

2008年01月10日

TWPUG - cakephp換頁效能與架構回應之二

Tags: php5 spl sql cakephp 記憶體管理

於 TWPUG 之回應內容,點擊連結參閱: 原文章串之回應內容

本文內容主要討論 PHP 資料查詢函數的記憶體管理機制。

FIEND:

如果 我的 db 有 一千萬筆資料 我全部都要入 變數 再 count ... 應該會 error ....

1. count 陣列變數太誇張了..
我在 db 而且 findall 我己經下 limit 了說
塞入 變數 的想法 真的很酷 不敢用會被打死 .

FIEND 不了解查詢結果的記憶體管理機制。當 PHP 向 DB 查詢資料後,資料內容就已經被儲存在 PHP 這方的記憶體內容了。說的更明白些,例如: $resource = mysql_query($query);。此時 $resource 已經是一個儲存了查詢結果的變數(但型態不是陣列)。如果查詢結果有一千萬筆資料,那麼 $resource 就會配置那麼多的記憶體空間儲存那一千萬筆資料。接著再使用 mysql_fetch_array() 等方法取出個別資料記錄。

...繼續閱讀

Posted by shirock at 樂多Roodo!12:15回應(10)引用(0)

2008年01月7日

TWPUG - cakephp換頁效能與架構

本文起於 FIEND 於 TWPUG 上發表之《小弟寫的 cakephp 換頁 排序 功能》。

FIEND 寫道: 而 CAKEPHP 的架構 是很漂亮的 畢竟也是抄 ruby 的架構 . 雖然只做到三層式架構 將 : 資料邏輯層 和 頁面邏輯層 清礎的切開運用 .

這說法挺奇怪的,基本上 "三層式" 只是概念性的說法,以有別於主從式架構明顯的二層結構,並不是 "只有三層"。所以後來更常見的說法是 n-Tier 或 "分散式架構"。"層數"並不是愈多愈好,因此它"雖然"只有三層,並不表示它做的比較差。

還有一點,三層式並不等於 MVC ,雖然同樣是分三塊。

...繼續閱讀

Posted by shirock at 樂多Roodo!16:19回應(0)引用(0)
 [1]  [2]  [3]  [4]  [5]  [6]  [7]  [最終頁]