noFrame PHP開發架構

來源:互聯網
上載者:User
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可以反饋給我,以便及時更正

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.