透視 WebMVC

前言

以往我所開發的 Web 專案,大部份都是把核心放在操作 HTML ;就算後來使用了 Smarty ,卻還是迷失在視覺為重的設計觀點裡,使得後續開發與維護都變得非常麻煩。後來我自己歸納出問題發生的原因,絕大部份在於我接觸的專案常常是「畫面先行」。

閱讀全文

我也來實作 PHP mix-in 的概念 - Part 2

石頭成老大說他要為他的 mix-in 實作 part 2 ,我也想到了一些好玩的東西。記得很久之前我寫過一篇「 PHP 的 callback 虛擬型態」,這次就把它用在這裡。

閱讀全文

我也來實作 PHP mix-in 的概念

之前提過一篇 Prototype-based programming in PHP ,後來在石頭閒語那裡也看到 PHP 實踐 mix-in 概念之可行性,我自己也手癢寫了一個。不過我是把 function 當成是一個 MethodObject ,有點 delegate 味道。然而大部份限制就像石頭成所說的,所以我也不多提了。還是等 PHP7 的規格出來,看它會不會支援 closure 好了 (要跟隨 Java 7 嗎? XD) 。

註: PHP 6 可能會實現的東西請參考 Prepare for PHP 6

閱讀全文

PHP 裡的 Prototype-based 開發手法

上次介紹了一篇 Bring some Ruby/Prototype flavour in your PHP array ,這次有個類似的。

文章網址: Prototype-based programming in PHP

閱讀全文

[好文] Check your PHP code at every level with unit tests

解釋如何利用 Unit Test 來測試各層級的 PHP 程式。

文章網址:Check your PHP code at every level with unit tests

閱讀全文

ASP 購物車三部曲(2)

簡介

是到了該結帳的時候了,就像你在大賣場買完東西後,要到櫃台付錢是一樣的。但是在購物網站買完東西後,總是要填寫一些個人資料,方便商家能夠把東西寄給你,這是虛擬商店比較不同的地方。

而要填寫的資料不外乎是購買人資訊、收貨人資訊等等,這些資訊大部份都能在使用者登入成為會員取得,這通常也是一般會員制購物網站的作法。

不過難題來了,雖然我們建立的是一個會員制購物網站,但是客戶卻希望能讓未註冊的訪客也能夠在這裡先買東西,而到結帳時才選擇是不是要加入會員。當然客戶永遠不會瞭解採取這種方式的難度,他認為你是網站開發人員,你一定會有辦法的。

先不要翻桌子,解決問題是我們的責任。仔細想想,訪客對購物網站的經營者而言,也可能是潛在的消費者;所以如果能提供便利的方式讓這些人轉變為會員,其實還滿重要的。

當然我們得提供畫面讓使用者填寫資料,並且把這些資料做適當的處理。不過後續的處理方式我就不多提了,現在我們把重點先放在結帳表單顯示的頁面流程,來看看物件導向思維如何應用在這上面。

註:這裡我也會略過金流及物流的部份,因為各家金流及物流的實作方式都不太一樣,要寫的話可能又會是落落長。

閱讀全文

[心得] 網頁程式開發建議

這篇是寫給新同事以及我自己備忘用的,也歡迎大家提出指正。

在撰寫網頁程式時,有些基本的東西要非常注意,這樣寫出來的程式才不容易出現問題,也才能夠交給客戶。以下就是我自己的開發心得,供大家參考。

利用明確的指定方式來取得頁面傳來的變數

不管是 GET 或 POST 的參數,我會希望明確地指定它的型態,例如 id 應該是整數, content 是文字等。而且我也常常發現有人把接到這些變數後,沒有事先做處理就直接串到程式中,這是非常危險的一件事情!

閱讀全文

ASP 購物車三部曲(1)

簡介

物件導向是一種思維,這點我深信不疑。但是在我寫了 ASP 物件設計手法系列文章後,我才發現自己其實深陷在語言的泥淖裡。

我想這裡也許該用一些真正的實例來表達我的想法了,也就是我想告訴大家,我心目中的物件導向思維到底是什麼?

前面幾篇的 ASP 物件設計手法或許看起來很神妙,但那只不過是 ASP 原本就有的一些東西。在別的物件導向語言裡,這些手法可能就像呼吸一樣稀鬆平常。所以如果你懂的是別種開發平台 (例如 PHP 、 ASP.NET 或 JSP ) 也沒關係,瞭解物件導向思維的意義後,你大可去發揮那個平台的長處。

當然不一定非得 ASP 不可,我已經不會再去證明 ASP 能不能辦到什麼。只不過我想會寫 Web 網站程式的人大部份應該都懂 ASP ,而且也為了延續之前的主題,所以這裡就繼續用 ASP 了。

註:這裡的 ASP 採用的當然是 VBScript ,你想用 JScript 來做我也不反對。

我將利用一個簡化的購物車程式,來介紹一些我設計購物車程式時的概念,其中會包括先前介紹的 ASP 物件設計手法以及設計模式的應用。

廢話不多說,往下看吧。

閱讀全文

很有趣的 Fluent Interface

在研究 Zend Framework Preview 的文件時,發現了一個很有趣的 PHP 寫法:

$select->from('round_table', '*')
->where('noble_title = ?', 'Sir')
->order('first_name')
->limit(10, 20);

看出來沒?除了 from 函式以外,每一個函式都直接接續著上一個函式。怎麼辦到的呢?

閱讀全文

ASP 物件設計手法 (6) - 單元測試

ASP 上的單元測試

沒錯,你沒看錯, ASP 也有單元測試。

什麼是單元測試呢?我想使用 Java 或 .NET 來開發程式的朋友們一定很熟悉。我這裡僅簡單說明一下它的原理,至於深入的介紹,請大家自行去找 XP (eXtreme Programming ,中文常譯為「極致編程」) 相關書籍吧。

註:建議你去看看點空間裡有篇文章叫「測試的概念」,寫得滿簡單易懂的。

在 ASP 上面要進行單元測試,首先就要有單元測試框架 (Unit Testing Framework) 。在網路上我找到了以下兩種框架:

它們的名字差在 U 的大小寫。

日本人開發的 ASPunit 架構比較複雜,而 ASPUnit 的比較簡單易懂,而且也容易使用,所以本篇將圍繞在 ASPUnit 這個測試框架上。

閱讀全文