FCS開發(fā)框架FAQ_第1頁
FCS開發(fā)框架FAQ_第2頁
FCS開發(fā)框架FAQ_第3頁
FCS開發(fā)框架FAQ_第4頁
FCS開發(fā)框架FAQ_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 Fast , Compatible & Simple OO PHP Framework FAQFCS開發(fā)框架FAQ(未完成版)第1部分 關(guān)于FCS 什么是FCS? FCS是一個快速、兼容而且簡單的面向?qū)ο蟮妮p量級PHP開發(fā)框架全稱是 Fast,Compatible & Simple OO PHP Framework。 FCS的使用對象有哪些? FCS框架的使用對象主要是PHP開發(fā)人員,F(xiàn)CS不是一個應(yīng)用系統(tǒng),僅僅是一個應(yīng)用開發(fā)框架,原則上可以支持很多應(yīng)用系統(tǒng)。 FCS有什么特點? FCS具有快速、兼容和簡單三大特點,并且在可維護(hù)性、安全性、可移值性以及可擴展性方面都有很好的表

2、現(xiàn)。其主要特性有:² 面向?qū)ο蠛蚆VC模式² 命名空間和國際化支持² 兼容PHP4和PHP5² 自動編碼轉(zhuǎn)換和utf-8支持² 內(nèi)置模板引擎和標(biāo)簽庫技術(shù)支持² 動態(tài)緩存機制² 客戶端組件支持² 異常和錯誤處理² 抽象數(shù)據(jù)庫訪問層和OO-RDMS Mapping ² 強大的FCS基類庫支持² 內(nèi)置JS類庫支持和命名空間方式導(dǎo)入² 集成RBAC權(quán)限訪問控制² 充分支持PATHINFO² 系統(tǒng)日志和調(diào)試² 項目部署和協(xié)作開發(fā) FCS的目錄結(jié)構(gòu)是怎么樣的

3、? FCS框架的系統(tǒng)目錄可以任意存放,您需要做的僅僅是在首頁文件中指定FCS框架的包含目錄,我們建議您如果可能的話把FCS框架的目錄包放到其它網(wǎng)站不能訪問的目錄下面,以保障應(yīng)用的安全性。下面是FCS框架包含的目錄結(jié)構(gòu): WebApps 網(wǎng)站應(yīng)用目錄 index.php 首頁文件 Tpl 模板目錄 Public 網(wǎng)站公共目錄 FCS 系統(tǒng)框架目錄 ( 和網(wǎng)站目錄可以分離 ) FCS.php 框架公共文件 Common 公共文件目錄 (存放一些公共函數(shù)、定義文件等) Cache 系統(tǒng)緩存目錄 Html 靜態(tài)文件目錄 (新版靜態(tài)文件無需放在web目錄下面了) Conf 配置文件目錄 (存放系統(tǒng)配置和

4、項目配置文件) Lang 語言文件目錄 Lib 類庫文件目錄 (存放基類庫和應(yīng)用類庫) Tags 標(biāo)簽庫文件目錄 Logs 日志文件目錄 Temp 臨時文件目錄(存放緩存數(shù)據(jù)) Uploads 上傳文件目錄 PlugIn 插件文件目錄 使用FCS框架進(jìn)行開發(fā)需要遵循什么開發(fā)規(guī)范嗎 ? FCS在開發(fā)過程中總結(jié)并遵循了一定的開發(fā)規(guī)范,詳細(xì)請參考FCS開發(fā)框架編碼規(guī)范,該編碼規(guī)范也是以后開發(fā)人員在使用FCS框架進(jìn)行應(yīng)用開發(fā)的參考規(guī)范。第2部分 安裝 FCS需要安裝嗎? FCS無需安裝,僅僅需要做簡單設(shè)置就可以進(jìn)行開發(fā)。 FCS有什么運行環(huán)境要求? FCS可以支持WIN/Unix服務(wù)器環(huán)境,支持PHP

5、4.3.0以上版本,完全兼容PHP5。FCS框架本身沒有什么特別模塊要求,具體的應(yīng)用系統(tǒng)運行環(huán)境要求視開發(fā)所涉及的模塊。 FCS在Unix類服務(wù)器下面需要什么特別設(shè)置? 在Unix類服務(wù)器下面,需要對以下目錄設(shè)置可寫權(quán)限(設(shè)置為777)包括FCS系統(tǒng)目錄下面的Cache、Conf、Logs、Temp、Uploads目錄。第3部分 配置 FCS可以支持哪些配置文件類型? FCS支持XML、INI文件和PHP數(shù)組、對象或者定義文件作為系統(tǒng)的配置文件,并且支持?jǐn)?shù)據(jù)庫方式的配置存取。不管是何種類型的配置文件,最后統(tǒng)一生成PHP定義文件。最佳的配置文件定義方式是使用PHP常量定義格式,并且命名為 _de

6、fine.php,可以免去解析的過程。 FCS配置文件每次運行是否會重復(fù)加載和解析? FCS框架在第一次運行的時候會加載并解析相關(guān)格式的配置文件,并且生成一個名為_define.php的配置定義文件,第二次運行的時候只是加載該定義文件,而無需重復(fù)加載和解析配置文件。(因此,當(dāng)更新配置文件的時候需要刪除_define.php定義文件才能生效)第4部分 概要 基于FCS框架的應(yīng)用程序的架構(gòu)和執(zhí)行過程是怎么樣的 ? FCS的分層架構(gòu)采用三層架構(gòu)模式:表現(xiàn)層:包含模板視圖、用戶界面、JS、Flash等通過模板引擎的支持,可以使用標(biāo)簽定義簡化表現(xiàn)層的定義工作。業(yè)務(wù)層:包含業(yè)務(wù)接口層、業(yè)務(wù)邏輯層、實體層、

7、數(shù)據(jù)訪問層Action控制器作為業(yè)務(wù)接口層,提供系統(tǒng)各種業(yè)務(wù)操作的入口。因此,不提倡在控制器類中寫過多的業(yè)務(wù)邏輯代碼,雖然說很難嚴(yán)格控制。具體的業(yè)務(wù)邏輯應(yīng)該封裝到數(shù)據(jù)訪問對象(Dao)類中實現(xiàn),如果覺得過于復(fù)雜,還可以把子業(yè)務(wù)在Helper類中包裝后統(tǒng)一調(diào)用。業(yè)務(wù)處理過程一般會構(gòu)造出業(yè)務(wù)實體對象(如Vo對象),對業(yè)務(wù)實體對象的存取通過數(shù)據(jù)訪問層完成。數(shù)據(jù)訪問層把實體對象和數(shù)據(jù)庫數(shù)據(jù)之間建立映射關(guān)系,并且封裝了通用的數(shù)據(jù)操作。數(shù)據(jù)層:目前支持的數(shù)據(jù)庫有MySql、PgSql、Oracle和Sqlite,數(shù)據(jù)庫的選用和業(yè)務(wù)邏輯沒有關(guān)系。 基于FCS框架的應(yīng)用程序的組成和執(zhí)行過程是怎么樣的 ? 基于

8、FCS框架的應(yīng)用程序組成和執(zhí)行過程如圖所示: 什么是VO ? VO是指Value Object(數(shù)據(jù)對象),更加精確的說是業(yè)務(wù)對象,因為VO對象是存活在業(yè)務(wù)層的,供業(yè)務(wù)邏輯使用的。VO對象和數(shù)據(jù)表存在一種映射關(guān)系,VO對象的每個屬性對應(yīng)數(shù)據(jù)表(或者視圖)的一個字段,你完全可以添加其他非數(shù)據(jù)表字段的VO對象屬性,以用于業(yè)務(wù)邏輯操作,例如關(guān)聯(lián)字段。VO對象有個特殊的保留屬性_info,是一個數(shù)組變量,用來保存該VO對象的一些特殊信息。和VO對象對應(yīng)的概念還有PO(持久數(shù)據(jù)對象),VO和PO的概念都來自于O/R Mapping (Object Relational Mapping,對象關(guān)系映射),P

9、O只能用在數(shù)據(jù)層(也就是說PO對象的屬性必須和數(shù)據(jù)表一一對應(yīng)),VO用在業(yè)務(wù)邏輯層和表示層(可以有自己的額外屬性)。各層操作屬于該層自己的數(shù)據(jù)對象,這樣就可以降低各層之間的耦合,便于以后系統(tǒng)的維護(hù)和擴展。如果將PO用在各個層中就相當(dāng)于我們使用全局變量,我們知道在OO設(shè)計非常不贊成使用全局變量。FCS框架采用了簡單的OO-RDBMS Mapping,沒有使用PO對象。 什么是VOLIST ? VOLIST對象是指數(shù)據(jù)列表對象,在FCS框架中,把查詢后的數(shù)據(jù)集(ResultSet)轉(zhuǎn)換成VoList對象,和ResultSet對象不同的是每個記錄就相當(dāng)于一個VO對象。在VOLIST對象中可以方便地遍

10、歷和操作VO對象。VO對象和VOLIST對象都屬于FCS框架中的實體對象,是數(shù)據(jù)操作的基本元素。如果你在開發(fā)過程中沒有使用Dao模式,而是通過數(shù)據(jù)庫驅(qū)動類直接操作數(shù)據(jù)庫,那么返回的是ResultSet對象。FCS系統(tǒng)提供了從ResultSet對象轉(zhuǎn)換為VOLIST對象的方法。 什么是Dao ? Dao是指Data Access Object (數(shù)據(jù)方法對象),Dao設(shè)計模式把底層的數(shù)據(jù)訪問邏輯和業(yè)務(wù)邏輯分開,夾在業(yè)務(wù)層與數(shù)據(jù)層中間,用于數(shù)據(jù)庫訪問和操作。可以針對單表和多表操作。FCS中的Dao對象屬于建立在抽象數(shù)據(jù)庫訪問層之上的事務(wù)性對象。 什么是HashMap ? HashMap來源于Jav

11、a,是一種哈希表,用途是把各個對象映射起來,實現(xiàn)了“鍵值”對應(yīng)的快速存取。PHP本身并不支持HashMap,F(xiàn)CS中的HashMap對象采用數(shù)組方式模擬實現(xiàn),其機理和HashMap的不同,但是接口和使用方法是一致的。HashMap在實現(xiàn)O/R Mapping的時候非常重要,在FCS框架中是一個非常重要的類庫,通過簡單的put和get方法存取對象屬性。在保存數(shù)據(jù)對象的時候,F(xiàn)CS會自動把HashMap對象轉(zhuǎn)換成相應(yīng)的VO對象。系統(tǒng)提供了VO對象和HashMap對象之間的相互轉(zhuǎn)換方法。 什么是FCS基類庫 ?包含有哪些類庫? FCS0.7版本開始引入了FCS基類庫的概念,用途是提供給應(yīng)用開發(fā)所需的

12、類庫,該類庫由官方負(fù)責(zé)維護(hù)。其中包括了幾個大類:² FCS.Core 核心類庫包² FCS.Db 數(shù)據(jù)庫類庫包² FCS.Util 工具類庫包² FCS.Exception 異常處理類庫包0.8版本還引入了RBAC類庫。 如何導(dǎo)入FCS基類庫中類 ? FCS框架中引用基類庫和應(yīng)用類庫的方式都采用命名空間引用方式,可以通過使用Import (“FCS.Util.HashMap”) 的方式來方便地引入類庫。如果需要引入多個類庫,可以使用Import (“FCS.Util.*”) 的方式。 FCS框架提供了哪些實用的類庫 ? FCS的Util類中提供很多實用的

13、工具類,這些工具類包括:ArrayObject模擬了SPL 的 ArrayObject類ArrayList模擬了Java中的ArrayList類ListIterator模擬了PHP的Iterator接口FileIterator模擬了SPL中的FileIterator 類DirectoryIterator 模擬了SPL中的DirectoryIterator 類Stack模擬了 堆棧類Session擴展了Session類,可以支持Session空間UploadFile非常強大的文件上傳類Validation表單驗證類,通過正則表達(dá)式擴展Log日志記錄類Date強大的日期處理類Image圖像處理和生

14、成類,可以很方便地生成圖像驗證碼SharedMemory 共享內(nèi)存類,用多種方式模擬共享內(nèi)存實現(xiàn),包括文件方式 使用FCS框架開發(fā),自己擴展的類庫需要繼承Base類嗎? Base類是FCS的基礎(chǔ)類,一個非常重要的特性就是起到兼容PHP4和PHP5處理,例如對架構(gòu)函數(shù)(_construct方法)和析構(gòu)函數(shù)(_destruct方法)的支持。同時還提供了很多通用的方法,比如使用set方法和get方法存取對象的屬性(該特性使得VO對象無需再添加各個屬性的set和get操作方法),_varList方法返回對象屬性列表,_toArray方法返回對象的屬性數(shù)組,toJson方法返回對象屬性的JSON字串,_

15、count方法返回對象的屬性數(shù)目等。基于以上理由,如果你的應(yīng)用基于PHP4開發(fā),強烈建議你的類庫繼承Base類。 FCS的錯誤和異常處理機制是怎么樣的? FCS使用了AppError和AppException方法來自動處理錯誤(包括警告等)和異常,如果要手動拋出錯誤和異常,需要使用trigger_error和throw_exception方法。同時,F(xiàn)CS會把錯誤和異常信息記錄到每個項目自己的日志文件中(可以通過配置文件關(guān)閉)。之所以采用throw_exception方法是為了保持PHP4和PHP5以上版本的統(tǒng)一,如果你使用PHP5以上版本開發(fā),同樣也可以使用throw 關(guān)鍵字來拋出異常,tr

16、y和catch來捕獲異常。throw_exception方法支持拋出不同的異常類型,無論在PHP4還是在PHP5環(huán)境下面,系統(tǒng)拋出異常的信息頁面是統(tǒng)一的。FCS的異常頁面在調(diào)試模式和生產(chǎn)模式下面是不同的,保證系統(tǒng)信息安全。 FCS的錯誤頁面是否可以定制? FCS異常和錯誤頁面使用了模板技術(shù),因此可以很方便地使用模板標(biāo)簽輕松定制。您甚至還可以指定錯誤跳轉(zhuǎn)頁面,通過設(shè)置配置文件中的ERROR_PAGE參數(shù),發(fā)生異常和錯誤后統(tǒng)一跳轉(zhuǎn)到任意指定的頁面。 FCS在應(yīng)用開發(fā)過程中如何調(diào)試? FCS框架支持系統(tǒng)調(diào)試功能,為開發(fā)人員提供了一定程度的方便性,如果你沒有自己的調(diào)試環(huán)境(例如Zend等IDE開發(fā)工具

17、)的話,可以通過內(nèi)置的調(diào)試方法來完成一些調(diào)試工作。echo($msg) 輸出調(diào)試文字,并繼續(xù)執(zhí)行halt($msg) 輸出錯誤信息,并中止執(zhí)行system_out($msg) 輸出調(diào)試信息到日志文件dump($var, $label=null, $echo=true) 輸出變量信息_DEBUG_START($label='') 記錄調(diào)試開始時間_DEBUG_END($label='') 輸出調(diào)試范圍運行時間(相同label屬于一個調(diào)試范圍)get_include_contents($filename) 獲取載入文件的內(nèi)容靈活的運用這些調(diào)試方法,可以在沒有調(diào)試工具

18、的條件下給開發(fā)工作帶來效率的提高。第5部分 模板 FCS內(nèi)置模板引擎有何特點? FCS內(nèi)置了一個性能卓越的模板引擎,是一個使用了XML標(biāo)簽庫技術(shù)的編譯型模板引擎,支持兩種類型的模板標(biāo)簽,使用了動態(tài)編譯和緩存技術(shù),而且支持自定義標(biāo)簽庫,利用該模板引擎可以方便地定義模板文件,從而達(dá)到快速開發(fā)視圖的目的。特點包括:² 支持XML標(biāo)簽庫技術(shù)和普通標(biāo)簽定義;² 只需編譯一次,下次直接運行而無需重新編譯;² 模板更新后,自動更新模板緩存;² 自動加載當(dāng)前操作的模板緩存文件,無需指定模板文件名稱;² 支持編碼轉(zhuǎn)換和Content-Type 更換;²

19、 模板變量輸出前綴支持,避免變量名稱沖突;² 模板常量替換,無需設(shè)置模板變量;² 支持函數(shù)功能和格式化功能;² 自動對象初始化,無需額外加載和初始化模板對象。 FCS模板引擎支持文件包含嗎? 支持多種方式的文件包含,包括公共文件包含、加載JS和CSS文件等。并且支持動態(tài)加載。 FCS支持Smarty或者其他的模板引擎嗎? 通過包含相應(yīng)的類庫文件和初始化,一樣可以使用Smarty或者其他模板引擎。不過在方便性上就沒有內(nèi)置的模板引擎方便。 什么是標(biāo)簽庫技術(shù)?為什么FCS要使用標(biāo)簽庫技術(shù)? 標(biāo)簽庫技術(shù)起源于JSP標(biāo)簽庫(也稱自定義庫),可看成是一套產(chǎn)生基于XML腳本的方

20、法,它經(jīng)由FCS內(nèi)置模板引擎來支持。在概念上說,標(biāo)簽庫是非常簡單和可以重用的代碼構(gòu)造,支持自定義擴展。FCS引入標(biāo)簽庫技術(shù)的用意在于更加方便的擴展模板標(biāo)簽使用,F(xiàn)CS標(biāo)簽庫的組成包括標(biāo)簽庫定義文件(XML)和標(biāo)簽庫解析文件(PHP類)。 有了標(biāo)簽庫為什么還要使用普通模板標(biāo)簽? 標(biāo)簽庫技術(shù)特點在于可擴展和復(fù)雜標(biāo)簽的支持,對于簡單的變量輸出,普通模板標(biāo)簽具有一定的優(yōu)勢,兩種方式的結(jié)合具有更高的效率。例如:<volist id='user' name='userList' > $ 

21、0;$user.age  $user.email </volist> FCS支持輸出哪些類型的模板變量? FCS支持普通變量、數(shù)組、對象屬性、VO對象、VOLIST對象和常量的模板輸出。在進(jìn)行模板變量賦值統(tǒng)一使用assign方法,在進(jìn)行變量輸出標(biāo)簽的時候進(jìn)行區(qū)分。第6部分 開發(fā) 使用FCS進(jìn)行應(yīng)用開發(fā)有哪些過程 ? 基于FCS框架的應(yīng)用開發(fā)過程大致分下面幾個過程:1. 項目配置和定義2. 數(shù)據(jù)模型和業(yè)務(wù)訪問邏輯(模型)定義3. 模塊和操作(控制器)定義4. 模板(視圖)定義5. 項目部署 FCS內(nèi)置了哪些常用的Action方法 ? FCS內(nèi)置了一些通用

22、的Action方法,如果沒有特別的要求,這些操作不需要寫任何代碼,而是直接繼承Action基礎(chǔ)類的方法就可以了。其中包括:index默認(rèn)的列表操作(包括搜索和排序功能)add 默認(rèn)的新增操作insert 默認(rèn)的新增保存操作(包括文件上傳功能)edit 默認(rèn)的編輯操作update 默認(rèn)的編輯保存操作(包括文件上傳功能)delete 默認(rèn)的刪除操作verify 默認(rèn)的顯示驗證碼操作download 默認(rèn)的文件下載操作delAttach 默認(rèn)的刪除附件操作output 默認(rèn)的導(dǎo)出列表數(shù)據(jù)操作forbit 默認(rèn)的禁用操作resume 默認(rèn)的恢復(fù)操作 FCS內(nèi)置了哪些常用的Dao方法 ? FCS內(nèi)置了一

23、些常用的數(shù)據(jù)庫操作方法,用來實現(xiàn)抽象化的數(shù)據(jù)庫操作。Add 新增一個數(shù)據(jù)對象Save 保存一個數(shù)據(jù)對象DeleteById根據(jù)主鍵的值來刪除一個數(shù)據(jù)對象Delete 根據(jù)條件Map刪除數(shù)據(jù)對象getById根據(jù)主鍵得到Vo對象find 根據(jù)條件查詢?nèi)〉肰o對象findAll 根據(jù)條件查詢?nèi)〉肰oList對象getCount取得符合條件的記錄數(shù)目getSum 取得記錄集中某個字段的總和getOne 獲取一條記錄的某個字段值getMax 取得某個字段的最大值getMin 取得某個字段的最小值query 進(jìn)行Sql查詢startTrans 啟動事務(wù)commit 提交事務(wù)rollback 事務(wù)回滾第7部分 數(shù)據(jù)庫 FCS目前支持哪些數(shù)據(jù)庫? 目前FCS可以支持Mysql(Mysqli)、Mssql、Oracle、Pgsql、Sqlite,并且可以自己擴展。 FCS是否采用PDO? 為了考慮到PHP4的兼容處理,F(xiàn)CS沒有采用PHP5才支持的PDO作為數(shù)據(jù)訪問方式,而是內(nèi)置實現(xiàn)了一個輕量級的抽象數(shù)據(jù)庫訪問層,支持包括Mysql(Mysqli)、Ms

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論