• Home
  • Joomla! 入門與導覽
  • Joomla!Platform Framework 簡介

Joomla!Platform、Framework 簡介

Joomla_Platform_graphic.png

Joomla! Platform

自 Joomla! 1.5 以來,Joomla 本身就一直擁有一個完整的 MVC 框架,這個框架層不只包含 Model View Controller,還有各類實用的函式庫,如:ORM, Mailer, Feed, Form Builder, URI, HTML Helper, UTF-8 String Handler, i18n 多語系工具等等。CMS 則是建立在這套框架上的一個 Application。

而到了 1.6 以後,更是一套完整的 RAD 框架,對於開發效率、物件複用與複雜 UI 的整合有更高的提升。也因此,從 1.7 版開始,官方決定逐漸將核心框架更完善的抽離出來,清除所有對 CMS 的相依,成為一個獨立的 Web 框架。Joomla! 的核心開發小組希望這套獨立出來的框架,能夠成為一個完善的 Web 應用平台,也因此,定名為 Joomla! Platform。

Joomla! Platform 的特色

核心架構

相較於另一套大型框架 Saymfony 的分散式架構,Joomla! 的架構較為中央集權(或者說緊湊)。例如 Symfony 的 Web 核心是 HttpKernel\Kernel ,Console 的核心是 Console\Application。而 Joomla 則統一在一起,由核心 Application (等同 Kernel) 另外延伸出 ApplicationWebApplicationCli,各自成為不同的應用入口。由此可見兩者在處理核心流程的層次區分有截然不同的風格。

而 Joomla! 的函式,大多也有統一的命名方向,例如單例模式便固定用 getInstance(),執行皆用 execute() 等,並不會出現 execute() 與 run() 並存,init() 與 boot() 並存之類令人混淆的設計。

這本身沒有好壞,因為他們都同樣是一套完善的 Full-Stack 框架,可以解決困難的需求,並歷經許多年無數網站的考驗成為一套成熟的解決方案,僅只是開發者的思維有所不同而已。當然,相較之下我更愛 Joomla! 簡潔的編程風格、易懂的命名原則、還有優美緊湊的架構。這是在我親自使用過兩套框架,並也實際大量閱讀他們核心原始碼後的心得,這是一個純粹的個人喜好。

類別命名與 PHP 5.3

由於 Joomla 是非常早期的一系列 PHP 框架先驅者之一,他保留了 PHP 5.2 之前以前綴字作為偽命名空間的風格。因為 CMS 作為一個被大量使用且經常更新的平台,官方難以立即擁抱 Namespace 將這個 Legacy 直接移除。但 JLoader 其實也支援 PSR-0 命名空間的 Autoloading,事實上,Joomla! 在很早期就已經善用了 PHP5 的 autoload 功能來載入類別了。

除此之外,其實 Joomla 還算是有善用 5.3 的許多功能,並非持續原地踏步,作為一個被運用在各類多變而嚴苛的虛擬主機執行環境的系統而言,Joomla 在最大化相容性之下對進步做出了一點妥協,但還是很值得鼓勵的。

OAuth 驗證功能

Joomla!Platform 內建許多 Web Service 的 API 整合工具,例如 Facebook, Github, Twitter, MediaWiki 等相關類別,讓我們可以非常方便的存取該服務的內容並整合到網站上。這些都是由內建的 OAuth 類別所驅動。

MVC

相較於 CMS 的複雜層疊,Joomla! Platform 的 MVC 走的是極簡風格,甚至可以說,比許多主流框架來的更精簡。

例如 Controller,每個 Controller,只實作一個 execute() 作為 Action ,也就是說,一個Controller僅執行一項任務。CRUD分別需要四個 Controller 來完成。例如下面的範例:

class MyappControllerSave extends JControllerBase
{
    public function execute()
    {
        $model = new MyappModel($this->db);

        if(!$model->save($this->input))
        {
            $this->app->redirect('edit.html');

            return false;
        }

        $this->app->redirect('list.html');
    }
}
 

Joomla Platform 不會因為這樣的極簡主義而喪失功能性,相反的,他讓我們的 Controller 不會隨著時間越來越臃腫,擁有更高的可維護姓。

在 Joomla Platform 之中,我們會大量看到類似這樣的設計,你一開始可能不習慣,但慢慢的會了解該如何善用它們。

很可惜的,在這裡的教學中我們以 CMS 為主,並未用上 Platform 中這樣的新設計。有興趣的人可以觀看官方教學。

至於其他強大的功能如 Form Builder、Query Builder、ActiveRecord、HTML Helper 等等算是目前主流框架的標配了,在此則不贅述。

Joomla! Framework

framework_logo.png

前面提到,Joomla CMS 與 Platform 為了相容做出了妥協,所以對新技術的使用較為保守(但對功能的進步可沒馬虎),Joomla Framework 則是2013 年初才另外獨立出來,為了完全擁抱最新技術的實驗性框架。

主要差別在於全面採用 Namespace 命名架構、登入至 Packagist 並整合 Composer 管理套件相依、各個功能分別拆開成 Component 可以單獨使用、全新的 DI Container 降低類別耦合等。

目前的 Joomla Framework 還在 beta ,推出不到一年,是非常年輕的框架,但其功能已經非常完整且堅實,可用來開發獨立應用了。畢竟還是有 Joomla Platform 與 CMS 這個前身響噹噹的牌子與經驗累計,發展速度算是快的很多。

Joomla Framework 算是企業級的大型框架(雖然程式走精簡風格,但功能可沒精簡),在效能上也一直有非常好的表現,是值得關注的一套新興框架,希望有朝一日能大放異彩。

Joomla Framework 的 Github 頁面

ukash birim çevirme saç ekimi estetik