石頭成老大說他要為他的 mix-in 實作 part 2 ,我也想到了一些好玩的東西。記得很久之前我寫過一篇「 PHP 的 callback 虛擬型態」,這次就把它用在這裡。
之前提過一篇 Prototype-based programming in PHP ,後來在石頭閒語那裡也看到 PHP 實踐 mix-in 概念之可行性,我自己也手癢寫了一個。不過我是把 function 當成是一個 MethodObject ,有點 delegate 味道。然而大部份限制就像石頭成所說的,所以我也不多提了。還是等 PHP7 的規格出來,看它會不會支援 closure 好了 (要跟隨 Java 7 嗎? XD) 。
註: PHP 6 可能會實現的東西請參考 Prepare for PHP 6 。
解釋如何利用 Unit Test 來測試各層級的 PHP 程式。
是到了該結帳的時候了,就像你在大賣場買完東西後,要到櫃台付錢是一樣的。但是在購物網站買完東西後,總是要填寫一些個人資料,方便商家能夠把東西寄給你,這是虛擬商店比較不同的地方。
而要填寫的資料不外乎是購買人資訊、收貨人資訊等等,這些資訊大部份都能在使用者登入成為會員取得,這通常也是一般會員制購物網站的作法。
不過難題來了,雖然我們建立的是一個會員制購物網站,但是客戶卻希望能讓未註冊的訪客也能夠在這裡先買東西,而到結帳時才選擇是不是要加入會員。當然客戶永遠不會瞭解採取這種方式的難度,他認為你是網站開發人員,你一定會有辦法的。
先不要翻桌子,解決問題是我們的責任。仔細想想,訪客對購物網站的經營者而言,也可能是潛在的消費者;所以如果能提供便利的方式讓這些人轉變為會員,其實還滿重要的。
當然我們得提供畫面讓使用者填寫資料,並且把這些資料做適當的處理。不過後續的處理方式我就不多提了,現在我們把重點先放在結帳表單顯示的頁面流程,來看看物件導向思維如何應用在這上面。
註:這裡我也會略過金流及物流的部份,因為各家金流及物流的實作方式都不太一樣,要寫的話可能又會是落落長。
物件導向是一種思維,這點我深信不疑。但是在我寫了 ASP 物件設計手法系列文章後,我才發現自己其實深陷在語言的泥淖裡。
我想這裡也許該用一些真正的實例來表達我的想法了,也就是我想告訴大家,我心目中的物件導向思維到底是什麼?
前面幾篇的 ASP 物件設計手法或許看起來很神妙,但那只不過是 ASP 原本就有的一些東西。在別的物件導向語言裡,這些手法可能就像呼吸一樣稀鬆平常。所以如果你懂的是別種開發平台 (例如 PHP 、 ASP.NET 或 JSP ) 也沒關係,瞭解物件導向思維的意義後,你大可去發揮那個平台的長處。
當然不一定非得 ASP 不可,我已經不會再去證明 ASP 能不能辦到什麼。只不過我想會寫 Web 網站程式的人大部份應該都懂 ASP ,而且也為了延續之前的主題,所以這裡就繼續用 ASP 了。
註:這裡的 ASP 採用的當然是 VBScript ,你想用 JScript 來做我也不反對。
我將利用一個簡化的購物車程式,來介紹一些我設計購物車程式時的概念,其中會包括先前介紹的 ASP 物件設計手法以及設計模式的應用。
廢話不多說,往下看吧。