2007年9月20日 星期四

Joomla! 1.5 初探之一:MVC架構

Joomla! 1.5正式版發佈在即,目前(2007.9.20)已有RC2發佈,最近又會發佈RC3,相信離正式穩定版本(Stable)發佈的日期已不遠。1.5版本是一個全新架構的版本,這個大幅度的改版,把二年前的Mambo 4.5.2幾乎重新改寫內部結構。這個架構得來不易,從一開始規劃到現在,也是整整花了二年的時間。

原來的Mambo的目標是為了要創造出「力量源自於簡單」的簡易使用架站程式,當然後來Miro公司自己內部開發的商用程式就更是如此。但自Mambo 4.5.1開源碼版本之後,由於方便的擴充能力,充份的表現在不論是佈景(Template)或擴充外掛程式中。這種擴充套件的發展十分受到程式設計師和美工設計師的喜愛,也因此成就了一個新興的軟體元件商業市場,和原來的以簡單使用為號召的Mambo愈趨愈遠。

在PHP語言中實現MVC(Model-View-Controller)的結構,一直是許多PHP程式設計師的夢想。PHP語言本身的結構鬆散,雖然易用好學,但對於大型的程式結構,卻是一場夢魘。雖然PHP語言仍是目前最多網站使用的程式語言,但諸多的批評和常見的不安全性,造成許多大型網站或商業公司的怯步,這是PHP語言正面臨到的大問題。

Joomla! 1.5的結構是完全的MVC結構,為了向PHP4版本相容的結果,有許多在PHP5之後才能使用的函式方式,Joomla!在這個地方作了妥協。JModel、JView、JController是實作出來的三個主要類別,未來在元件的實作,都需要藉由"繼承"這三個主要類別來達成。JModel中是有關於資料庫的互相作用的函式,JView是最後所顯現的樣子,而JController擔任工作觸發及指派的責任,聽起來很容易,但實際上MVC設計模式,對於PHP程式設計師而言,是進階的學習之路,要對PHP的物件導向設計方式有一定程度的了解,才有辦法了解這個設計模式的運作邏輯。

Joomla!官方提供了四個簡單元件的的設計教學(教學1教學2教學3教學4),由這四個簡單的教學,可以窺得1.5的結構嚴謹程度,和1.0版本簡單三層式區分寫法相比,根本是天壤之別。

有許多人會好奇,為什麼要用MVC這種方式來作架站軟體的開發架構,有什麼優點?個人的觀點是因為目前的網站開發已經是非常重視Framework(框架)的時代,不止是在PHP語言中,在Java、Ruby、Python、.net等程式語言,都一步步進化到純粹物導向化和使用各種設計模式。由於網路和硬體的執行效能和速度已經非常好,在這個環境中,一個良好的軟體開發架構反而變成是研究和發展的重點。在Joomla!開發小組領導人Johan Janssens的這篇文章「New MVC framework in Joomla 1.5 too good? 」中,可以看到對於Joomla!1.5中的MVC架構的津津樂道,簡簡單單的幾行程式碼就可以把整個結構運作出來。可見多花一點時間學習這樣的新設計方式,是不會吃虧的:)