国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP開發利器-PRADO 1.6入門與安裝

2024-05-04 23:04:53
字體:
來源:轉載
供稿:網友

  第1章 入門

  1.1  prado是什么?

  prado是在php5環境下的一個基于事件驅動和基于組件的web應用開發框架。使用prado開發web應用,你主要需要做的工作就是使用已有的組件(原文是"實例化已經定義好的組件",熟悉面向對象編程的開發者可能比較容易理解這句話),設置組件的屬性,為控件組件的各種事件編寫對應的處理函數,然后把這些組織成一個個的頁面。(譯者注:個人傾向于將component翻譯為組件,control翻譯為控件,事實上大多數場合兩者沒有什么區別,但是為了讀者能夠更加容易理解原文,本文一律按此規則翻譯。)這個過程和使用rad開發工具(比如delphi或者visual basic)來開發windows應用程序非常類似。

  下面用一個簡單的例子來說明prado框架的工作原理。假定我們現在要使用prado來開發一個常見的登錄頁面。首先我們選擇prado中的2個ttextbox控件和1個tbutton控件來分別對應用戶名輸入,密碼輸入和提交按鈕。然后把對應密碼輸入的ttextbox控件的textmode屬性設置為"password",并為tbutton控件的onclick事件指定一個處理函數login。最后把這些控件放到頁面模板的合適的位置上(后面會解釋什么是頁面模板,實際上它和一個html頁面很相似),一個功能完善的登錄頁面就實現了。控件會自己處理好如何顯示數據,如何得到用戶輸入的數據,如何響應用戶的操作等這些事情。例如,ttextbox控件會顯示一個輸入框讓用戶輸入;用戶輸入的密碼會被顯示為*號,而開發者在代碼中可以通過讀取ttextbox控件的text屬性來獲取用戶實際輸入的密碼;當用戶點擊了提交按鈕的時候,login 函數將會被自動調用。這和傳統的php編程處理方式很不一樣。使用傳統的php編程方式,開發人員需要使用html標簽來顯示用戶輸入框和按鈕,同時需要自己解析post數據來獲得用戶的輸入以及判斷按鈕是否被點擊了等等這些事情。

prado

  基于組件的編程方式使代碼的重用極為方便。一些重復性的單調的工作比如表單輸入的驗證,頁面狀態的管理等都可以使用prado已經提供的組件來處理。開發者也可以通過繼承現有的組件或者組合現有的組件來開發新的組件滿足要求。另外一些新的組件即將發布。

  總來的說,prado 為php的編程人員提供了以下的有益之處:

  • 可重用性 - 符合prado組件標準的代碼是高度可重用的。
  • 易于使用 - 使用prado組件非常簡單,通常只需要配置它們的屬性,編寫相關的事件處理函數。
  • 健壯性 - prado讓開發者不再被那些令人厭煩的有很多錯誤的的代碼所困擾。它的代碼都是有對象,方法和屬性組成的;而不是url地址和各種query參數。php5最新的exception處理機制也被引入進來,讓開發人員能夠精確定位到錯誤代碼的所在行數。
  • 高效 - prado開發的web應用運行很快。prado實現了一種緩存機制,使用其開發的應用的運行效率能夠和那些通常使用的模版引擎開發的應用的運行效率相媲美。
  • 團隊協作 - prado允許內容和表現方式分離。組件,尤其是頁面,將內容(邏輯)和表現方式分別保存在不同的文件中。

  目前已經有很多php的框架,mojavi, wact , php.mvc, phrame等等。它們主要是建立一套松散的php代碼組織方式(比如 model-view-controller)。其中一些更多的面向開發一個內容管理系統,并提供了諸如用戶管理模塊等更多的功能。

  和這些框架相比,prado更專注于建立一個代碼重用和事件驅動的編程標準。如果你曾經用delphi或者visual basic等這些rad開發工具來開發windows程序的話,那么你會發現使用prado來開發web應用是非常類似的,你可以很快就掌握prado來進行web應用的開發。大多數情況下,你要做的僅僅是設置組件的屬性和響應組件的事件。更高層次的代碼重用,比如前面所說的用戶管理模塊,可以基于prado組件來實現。

  prado的思想最先我是從apache tapestry項目想到的。在設計和實現的時候, borland delphi 和microsoft asp.net的設計思想起到了很重要的作用 。實際上,使用過asp.net的人可以發現prado中有很多地方和它是相似的。

1.2  安裝


 

  prado需要php5的環境,以及simplexml模塊(php5缺省安裝后的環境下已經包括了這個模塊)。在windows xp和redhat linux環境下,已經在apache和iis web服務器上都通過了測試。

  prado框架使用一個.zip文件發布。在linux下可以使用unzip,在windows下可以使用winzip來解壓。解壓完畢后,會在當前目錄下創建一個目錄prado。這個目錄主要包括以下這些文件和目錄:

 readme.html            此項目的說明文件
index.html 和readme.html中的內容是一樣的
copyright 此項目的版權信息
history 版本升級信息
framework/ prado框架的核心代碼
examples/ prado的一些例子
docs/ prado的幫助文檔

  完成了解壓之后,把prado目錄的所有東西復制到web服務器的根目錄下。(也可以把它復制到某一個子目錄下,甚至更深層次的目錄下,prado對此沒有限制。如果你將它復制到了某一個子目錄下,以下的url地址需要做相應的修改。)

  非常簡單,安裝已經完成了!現在你可以試一下prado發布包中的三個例子了:``hello, world!", the hangman game(一個猜單詞的游戲), 和prado通訊錄,它們的url地址是:

  • ``hello, world!" - http://<web-server-address>/examples/helloworld.php
  • the hangman game - http://<web-server-address>/examples/hangman.php
  • the prado phonebook - http://<web-server-address>/examples/phonebook.php

1.3  范例: hello, world!

  在這一節中,我們主要來說明``hello, world!''

  這個例子,讓你對使用prado開發有一個印象。這個例子非常的簡單,只有一個頁面,上面顯示了一個"click me"的按鈕。當用戶點擊了這個按鈕,這個按鈕的標題會變成``hello, world!''。

  要完成這個功能需要這些文件,

  • helloworld.php , 應用的主入口;
  • helloworld/application.spec, 應用的配置文件;
  • helloworld/homepage.php, 頁面的類文件;
  • helloworld/homepage.tpl, 頁面的模板文件.

  注意,目錄 helloworld 應該設置為web用戶不可以訪問的(讀的權限也不能給),因為其中的文件包括了一些重要的數據信息(比如數據庫的連接口令等等)。不用擔心這么設置web用戶會不能正常的訪問,因為實際上他們根本不用去訪問helloworld 目錄中的文件。在其它使用prado開發的應用中你也應該這么做。

  在helloworld.php 文件中,程序主要是實例化 tapplication 這個類,(譯者注:如果對實例化這個詞不怎么理解,你也可以這么理解,就是申明一個類型為tapplication的變量。)并開始運行應用,代碼如下:

 <?php require_once('../framework/tapplication.php');
$app=tapplication::getinstance('helloworld/application.spec');
$app->run();
?>

  這里我們假定框架的代碼位于 ../framework 目錄下。

  每一個 prado應用都應該有這么一個入口文件。他們之間主要的區別在于 getinstance
函數的參數的不同,這個參數指明了應用的配置文件的位置。

application.spec 是一個xml文件,用來配置應用級別的參數。(就好象全局變量一樣,當然現在是只讀的,我們正在決定是否下一版本中允許可讀寫的)在這個例子中,它包含了如下的代碼:

 <?xml version="1.0" encoding="utf-8"?>
<application default-page="homepage" cache-path="">
<alias name="pages" path="." />
<using namespace="system.web.ui.webcontrols" />
<using namespace="pages" />
</application>

  <alias> 元素(譯者注:按xml文件通常的譯法,<alias>...</alias>整個翻譯為元素,其中alias翻譯為元素的標簽,一對閉合的alias標簽中的值翻譯為元素值,name, path這些則翻譯為屬性名,它們的值翻譯為屬性值,參考"<標簽 屬性名= 屬性值>元素值</標簽>")定義了路徑的別名。別名system 是系統內部定義好的,用來指示框架核心代碼所在的目錄。可以使用路徑別名來定義命名空間。命名空間實際上就是一個加入到php搜索路徑 include_path中的目錄。 <using> 元素指明啟動應用使用的命名空間。(也可以在代碼中調用 using() 函數來使用一個命名空間) 

  <application>default-page 屬性指明了應用啟動時缺省進入哪一個頁面。在這里我們指定了homepage頁面,它對應了一個頁面類homepage (關于頁面和頁面類后面會專門對它們進行解釋的)。

  homepage.tpl 文件是頁面類homepage一個模板文件,包含如下的代碼:

 <html>
<head>
<title>hello, world!</title>
</head>
<body>
<com:tform>
<com:tbutton text="click me" onclick="clickme" />
</com:tform>
</body>
</html>

  它和html頁面非常的相似。唯一不同的地方就是元素 <com:tbutton> ,它代表了一個
tbutton 組件。 tbutton 組件將會顯示為一個表單的按鈕,按鈕的標題是"click me","click
me"是在 text 屬性中被指定的。通過設置 onclick ,可以指定頁面方法 clickme 來響應按鈕的 onclick 事件。因此,當按鈕被點擊的時候,方法 clickme 就會被自動調用了。

  homepage.php 文件包含了定義頁面類 homepage 的代碼,如下:

 <?php
class homepage extends tpage
{
function clickme($sender,$param)
{
$sender->text="hello, world!";
}
}
?>

homepage 類繼承了 tpage 類。tpage 類是prado框架本身提供的,它是所有頁面類的基類。homepage 類只包含了一個方法clickme ,這個方法就是剛才我們提到的頁面模板中響應按鈕onclick 事件的方法clickme  。這個方法的代碼的作用是設置事件的發送者$sender(這里就是這個按鈕)的text 屬性為 ``hello, world!"。我們期望當用戶點擊這個按鈕的時候,按鈕的標題改為``hello, world!" 。
  這個包含在 prado 發布包中的例子可以通過此url來訪問:href="http:///examples/helloworld.php">http://<web-server-address>/examples/helloworld.php
.
  你可能會說完成這么一個簡單的功能有什么大驚小怪的。是的,這個功能確實非常簡單,用幾行php代碼就可以完成。但是這個例子主要是目的是為了讓你感受一下prado編程方式,它是面向對象的,基于組件和基于事件驅動的。用類似的編程方式可以實現更復雜的功能,請繼續看下面幾章。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东丽区| 滦平县| 蒲江县| 原阳县| 昌吉市| 贡嘎县| 光山县| 兴仁县| 淅川县| 吉水县| 茶陵县| 奉化市| 黔西县| 隆化县| 金门县| 南充市| 天峨县| 盐边县| 文成县| 兴城市| 利辛县| 虎林市| 普洱| 长乐市| 台江县| 遵化市| 罗江县| 乡城县| 隆林| 和田市| 阜城县| 鸡西市| 满城县| 宿松县| 九台市| 江北区| 财经| 惠州市| 彰化县| 句容市| 屏东县|