noFrame在oschina託管地址:https://git.oschina.net/yii153/noFrame
noFrame在github託管地址:https://github.com/yii153/noFrame
目前noFrame的結構如下
|-Databases 資料庫目錄,該目錄只能包含資料庫類,且除Database類之外的所有類都要實現Database介面【僅供參考】
|-Database.class.php 資料庫連接類,應用中連結資料庫只需要引用該類並建立該類的對象【僅供參考】
|-Database.interface.php 資料庫介面,定義了資料庫類要實現的方法【僅供參考】
|-Mysql.class.php mysql資料庫類,需要實現Database介面【僅供參考】
|-SqlServer.class.php sqlserver資料庫類,需要實現Database介面【僅供參考】
|-Example 樣本目錄【僅供參考】
|-System.class.php 系統類別,提供了歡迎資訊,版本資訊,入庫樣本,查詢樣本。可直接通過$webRoot/entrance.php/Example/System/$method調用擷取資訊【僅供參考】
|-Utils 工具目錄【僅供參考】
|-Util.class.php 工具類,提供了請求執行成功,請求執行失敗,請求執行成功並返回資料。可引用Util類並通過Util::$method調用【僅供參考】
|--LICENSE LICENSE檔案
|--README.md README檔案
|--entrance.php 入口檔案【核心檔案】
註:【僅供參考】部分可根據實際項目需要修改或刪除。
noFrame 實現單一入口,類自動載入,全域類映射(可以通過單一入口映射任意目錄中的任意類的任意公用方法,不局限於目錄和層級),noFrame提供pathinfo模式和相容模式兩種入口模式,noFrame預設全域開啟session,noFrame內建錯誤處理。noFrame不需要額外安裝任何拓展和環境部署,只需拷貝到noFrame到您的web根目錄下即可使用。並且,所有這些功能的實現都是通過一個檔案來完成的。
noFrame以entrance.php(入口檔案)作為核心檔案。使用只需將該檔案拷貝到應用根目錄下,便可以快速開發出一套基於MVC、單一入口、類自動載入的應用。
noFrame基於PSR-0規範,類檔案除類外不得有其他執行代碼,所有類使用命名空間,命名空間和類的絕對路徑一致,類名和路徑名首字母大寫,所有類自動載入。
下面以調用未知目錄下的$Class類的$method方法為例
namespace $Folder_a\$Folder_b\Folder_c\...\$Folder_z; 命名空間與該檔案的路徑保持一致
use $Folder_d\$Folder_e\Folder_f\...\$IncludeClass; 引用其他目錄下的類檔案
use $Folder_g\$Folder_h\Folder_i\...\$IncludeStaticClass; 引用其他目錄下的靜態類檔案
class $Class 建立類
{
public function $method() 建立public方法
{
$IC = new $IncludeClass(); 建立引用類的對象
$IC->$method(); 調用該對象的方法
$IncludeStaticClass::$method(); 調用引用靜態類的方法
}
}
支援pathinfo的伺服器環境調用地址如下
entrance.php/$Folder_a/$Folder_b/Folder_c/.../$Folder_z/$Class/$method
不支援pathinfo的伺服器環境調用地址如下
entrance.php?$Folder_a/$Folder_b/Folder_c/.../$Folder_z/$Class/$method
pathinfo模式和相容模式的調用區別僅僅是在entrance.php後面的/和?的區別。
noFrame對於請求的響應做了如下約定,具體可以參考Example下的System.class.php,當然你可以根據實際情況調整或修改其約定。
1.返回資訊一定為json字串
2.返回資訊一定包含請求處理成功為真/假的資訊
3.請求處理成功為假則一定包含錯誤資訊。
4.完成請求後,將響應資訊轉成json對象,如果請求處理成功為假,則列印錯誤資訊並返回。否則列印成功資訊或解析資料
服務端樣本 //Controller/Test/test
try{
//do some thing...
Util::echo_success();
}catch (Exception $e){
Util::echo_error($e->getMessage());
}
用戶端樣本 //entrance.php/Controller/Test/test
if(!response.success) {
alert(response.message);
return;
}
alert('success');
在使用過程中出現什麼問題或bug可以反饋給我,以便及時更正