Delphi for PHP is Not on Rails |
|
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
Delphi for PHP is Not on Rails #1
Just can't stay away CodeGear (前身 Borland 公司 IDE 部門) 日前發表了 Delphi for PHP 。於是我很快的觀看了一遍操作 Demo 。很遺憾,我必須說它並未發揮 PHP 的特色,程式碼寫作方式充滿了 Java/C# 風格,而不是 PHP 風格。 首先看看其 Demo 中的範例程式碼 (節錄主程式部份)。 [code php] class Unit1 extends Page { public $ListBox1 = null; public $Button1 = null; public $Edit1 = null; public function Button1($sender, $params) { $this->ListBox1->Items[] = $this->Edit1->Text; } } [/code] Delphi for PHP 所展示的框架概念,通常稱為 event-driven and component-based framework。Visual Studio 等視覺化IDE 環境所採用的開發框架也是這一類。如果不是變數名稱前面加了個 $ ,乍看之下會誤以為是 C#/ASP.Net 。一個熟悉 Delphi 或 Visual Studio 等工具的程序員應該會覺得很親切,親切到不覺得有何不妥。但是,對於我這種不使用 IDE 工具,又在 Web programming 領域打滾許久的程序員而言,一眼可以看出這種設計方式非常不敏捷,與引領目前 Web 開發趨勢的 Ruby on Rails 框架概念相違背。而 Ruby on Rails 的框架概念早已深深影嚮了目前 PHP 框架開發的趨勢,如 CakePHP, Code Igniter, PHP on Trax 等框架皆引入了 Ruby on Rails 的概念。當我看到 Delphi for PHP 展示的程式碼時,我當下反應「為什麼我寫程式時要知道那裡有一個 button?」。一個熟悉 JSP/ASP.Net 等開發工具的程序員也許反應不過來,但了解 MVC 概念並使用過類似 Ruby on Rails 框架的 Agile programmer 應該已經知道我要講什麼了。在我說明之前,請先觀看一段基於 Code Igniter 框架的 Demo 程式。Code Igniter 是基於 MVC 概念並引入 Ruby on Rails 概念的 PHP 開發框架。 [code php] class Blog extends Controller { function __construct() { parent::Controler(); } function index() { $data['title'] = 'My Blog Title'; $data['query'] = $this->db->get('entries'); $this->load->view('blog_view', $data); } function comments() { $data['title'] = 'My Comment'; $data['query'] = $this->db->get('comments'); $this->load->view('comment_view', $data); } function comment_insert() { echo 'testing...'; } } 請在此區域輸入程式碼 [/code] 這種框架主要透過 http://your_server/controller_class/method/arguments 這樣的 URL 形式,調用對應的 method of controller class 以及 view 。不妨就稱為 Method-driven framework ,以對應於 Event-driven framework。在 Method-driven framework 中,我們將程式視為一個個等待使用者調用的服務,使用者只需透過基於 WS 或 REST (*2*2 WS: Web Service; REST: Representational State Transfer) 之 URL 即可調用 。在這類框架中,程序員在撰寫時根本不考慮使用者介面的內容,當然更不必知道那裡有一個 button 。Is there a button, or any UI component else? I Don't Need To Know! global $application; global $Unit1; $Unit1 = new Unit1($application); $Unit1->loadResource(__FILE__); $Unit1->show(); 對程序員 (application programmer) 而言, Event-driven framework 令視覺元件侵入程式碼。修改 UI 之任何動作皆意味著程式碼之修改。於是要加一個 button 就要加一段 public $Button2=null; public function Button2(){} ,加一個 link 就要加一段 public $Link1=null; public function Link(){}。當程序員處於 IDE 環境之下時, IDE 工具在大多數時候會幫程序員處理這些內容。一但程序員脫離 IDE 環境,或是進行某些 IDE 工具未能掌握的編輯行為時,要修改這些程式碼就變成一個重覆性的作業。這自然不夠敏捷。 轉貼至 http://twpug.net/modules/newbb/viewtopic.php?post_id=9767
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。 |
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
Hello 站長
由於原文章類型為 Win32 Api 的程式問題 但發覺問題發表不當, 便索然將問題改為分享文章 分享文章內容不算是 Win32 使用討論區 請教該如何轉移討論區呢?? ps: Win32的分享文章,眼觀 Ktop 知識眾多~~
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。 |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
目前移動討論僅由板主以上權限才可執行。
目前並沒有Delphi for php專欄,個人認為較適當的專欄為本站網友互動連絡園地 , 因此先將本討論串移至該分區,謝謝分享。 ===================引 用 AndrewK 文 章=================== Hello 站長 由於原文章類型為 Win32 Api 的程式問題 但發覺問題發表不當, 便索然將問題改為分享文章 分享文章內容不算是 Win32 使用討論區 請教該如何轉移討論區呢?? ps: Win32的分享文章,眼觀 Ktop 知識眾多~~
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |