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

說明

石頭成老大把他心目中的 mix-in 目標做出來了,他主要的實作有以下兩個重點:

  • 物件實體生成後彼此做 mix-in 是不相干的。
  • 類別方法在動態委派後要能遵守繼承原則,也就是說子承父、父不承子。

另外他也提到要儲存方法是一件困難的事情,因為 PHP 有三種函式的呼叫方法:一般函數、類別靜態方法、實例方法。而我在 Part 2 裡的概念實作則是用 callback 虛擬型態來儲存,不過卻忘了把一般函式給放進去。

不過 Part 2 的實作已經實現了第一個目標,所以在這次 Part 3 的實作裡,我除了決定把一般函式也納入 mix-in 的實作裡,而且還要達成石頭成老大說的第二個目標。

閱讀全文

好書推薦

新書預告

以下為最近將會出版的書籍,值得期待:

好書推薦

另外整理一些我個人覺得不錯的 Web 開發相關中文書籍供大家參考 (我看過的才介紹) ,它們都是非常值得大家閱讀與收藏的技術書籍。

註:只介紹中文書的原因是為了讓經驗較少的伙伴也能快速瞭解這些技術,事實上還有更多原文的好書值得參考。

閱讀全文

透視 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 物件設計手法以及設計模式的應用。

廢話不多說,往下看吧。

閱讀全文