一、Asf 是什麼?
全稱 API Services Framework, 用C語言編寫的高效能PHP框架, 工作變得很簡單。
Asf 具有很多微創新, 屬於新一代輕量級的MVC框架,內部稱為DLS。
開源之路任重而道遠, 我們共同砥礪前行,希望大家多多支援。
二、宗旨
- 把過去多行程式碼才能實現的功能, 簡化成一行程式碼實現一個功能, 有效得減少了PHP程式碼量、錯誤率
- 優化重複程式碼, 提升專案開發效率, 開發者更應該把精力花在業務上(您是否經歷過, 老闆上午提需求, 下午就得對外發布)
- 最大化做到遵循PHP PSR規範
- 解決使用者輸入, 服務端輸出的安全性問題
- 解決原生PHP框架嚴重消耗IO、記憶體、CPU的問題
三、特點
重要:穩如泰山,安如磐石。洞察異常,快人一步。
- 在快速定位問題、高效業務開發、大叢集部署方面富有自己的魅力
- 999 特殊錯誤號, 攔截程式在runtime時的所有異常
- 提供 Asf_Sql_Log、Asf_Err_Log 機制記錄介面執行時資訊
- 提供實用的豐富的開發類庫, 類隨PHP程式啟動就常駐記憶體
- 提供 Logger Buffer Cache , 檔案描述符自動關閉機制
- 強大的 GPC 機制, 外部($_GET, $_POST, $_COOKIE)引數操作變得簡單
- 提供配置檔案常駐記憶體, 提升配置檔案內容快速讀取能力(詳細說明)
四、優點
- 用C語言開發的PHP框架,只有少量的效能消耗
- 支援本地類庫自動載入規則(library)
- 支援多種配置檔案格式(INI, PHP, PHP Array)
- 支援多種路由協議, 預設使用RESTful路由模式, 提供方便的路由配置器
- 提供DB輔助函式(MySQL, Sqlite, Pgsql), 人性化Query Builder
- 遵循PHP PSR Standards, PHP Coding Standards
- 提供強大的條件判斷機制(Asf_Ensure)
- 框架結構簡單, PHP標準的擴充套件安裝方式。框架執行速度更快, 更少的記憶體、CPU使用
- 框架無過度設計, 沒有超厚的幫助手冊, 也不用去學習一套新的程式設計語法
五、流程圖
六、效能
6.1 總結
6.1.1 壓測結論
沒有挑取漂亮的資料, 或者配置一個為了壓測的最優環境. 只是簡單地採用以大部分web機器使用的環境進行測評。
這裡只是給出了一種測試方法, 通過多次不同併發數測試結果得知, Asf 與原生 PHP 做比較, 效能消耗只有 6% ~ 15%。
6.1.2 業務開發速度結論
採用 Asf 框架開發業務, 程式碼量能節約 20% ~ 25%。假如專案開發需要4天 x 8小時, 能節約出整整1天 x 8小時的工作時間。
七、安裝
7.1 環境要求
- PHP 7.0 +
- GCC 4.4.0+ (Recommended GCC 4.8+)
7.2 下載
git clone https://github.com/yulonghu/asf.git
複製程式碼
7.3 在Linux/Unix/Mac下編譯
$ /path/to/phpize
$ ./configure --with-php-config=/path/to/php-config
$ make && make install複製程式碼
7.4 文件
八、開始使用
8.1 使用內建工具生成空專案
/php-bin-path/php /tools/asf_project.php /to-path/project_name
複製程式碼
8.1.1 目錄結構
+ public
| - index.php
+ config
| - config.php
+ library
+ modules
| - Bootstrap.php
| - Constants.php
+ api
|+ services
|- Index.php // Default service
|+ logics
|+ daos
複製程式碼
8.1.2 config/config.php
<?php
$configs = array(
'asf' => array(
'root_path' => realpath(dirname(__FILE__)),
)
);
return $configs;複製程式碼
8.1.3 public/index.php
<?php
define('APP_PATH', dirname(__DIR__));
$app = new Asf_Application(APP_PATH . '/config/config.php');
$app->run();複製程式碼
8.1.4 Default service
<?php
class IndexService
{
public function indexAction()
{
return 'Hello World';
}
}複製程式碼
九、在Nginx/Apache/Lighttpd中執行
9.1 輸出結果
{
"errno": 0,
"data": "Hello World"
}複製程式碼
十、License
Asf is open source software under the PHP License v3.01