Swoole包含兩個主要部分:一個是用C語言開發(fā)的PHP擴(kuò)展,作為核心功能;另一個是通過PHP代碼編寫的框架,類似于yii、TP和Laravel。
Swoole擴(kuò)展本身具備web服務(wù)器功能,可以取代php-fpm。當(dāng)僅使用Swoole框架時,可以像其他PHP框架一樣運行在Nginx、Apache等Web服務(wù)器中。
Swoole框架是一個適用于Web開發(fā)的PHP框架。與傳統(tǒng)的PHP框架不同,Swoole框架基于Swoole擴(kuò)展,提供了更底層的服務(wù)器通信機制,可以支持UDP、TCP等多種協(xié)議,而不僅僅限于HTTP。
安裝方式也有所不同。Swoole擴(kuò)展可以像其他PHP擴(kuò)展一樣通過PECL或者編譯安裝來獲取。而Swoole框架則可以通過Composer引入后進(jìn)行安裝,或者手動下載源代碼并進(jìn)行手動引入。
需要注意的是,Swoole框架是基于Swoole擴(kuò)展開發(fā)的應(yīng)用實例,因此在使用Swoole框架之前需要先安裝好Swoole擴(kuò)展。
了解更多關(guān)于Swoole框架和Swoole擴(kuò)展的詳細(xì)信息可參考Swoole文檔中心的鏈接:http://wiki.swoole.com/wiki/page/p-framework.html
Swoole擴(kuò)展作為基礎(chǔ),可以用來開發(fā)各種類型的框架,不僅僅局限于Web框架。
推薦(免費):swoole
框架采用唯一接口對象機制。
調(diào)用框架的第一步,require('config.php');首先要包含config.php ,然后會生成$php對象。 如果在Controller、Model、View中,通過$this->swoole來調(diào)用。如果在函數(shù),或者是其他被include的程序中,通過global $php來引用。
$php->db | 數(shù)據(jù)庫接口 |
$php->cache | 緩存系統(tǒng)接口 |
$php->tpl | Smarty模板引擎接口 |
$php->model | 調(diào)用Model對象接口 |
$php->mvc | MVC結(jié)構(gòu)數(shù)據(jù) |
$php->plugin | 插件系統(tǒng)接口 |
/* 導(dǎo)入config.php文件,這是調(diào)用框架必須的第一步
config.php會載入基本配置選項,和基本函數(shù),并生成全局接口變量$php
在代碼的任何位置處,都可以通過global $php來引用全局接口對象
*/require('config.php');
$res = $php->db->query('select * from test_table'); //執(zhí)行SQL語句,得到一個查詢的結(jié)果,查詢結(jié)果,可以獲取數(shù)據(jù) $res->fetch(); //獲取單條數(shù)據(jù)。是字段-值,組成的關(guān)聯(lián)數(shù)組。 $res->fetchall(); //獲取全部 $data = array();
$data['title'] = 'hello wolrd!';
$data['author'] = 'me';
$php->db->insert($data,'test_table'); //將關(guān)聯(lián)數(shù)組按照鍵值對應(yīng)轉(zhuǎn)為字段-值對應(yīng),插入到數(shù)據(jù)庫表test_table中。
//insert into test_table(title,author) values('hello wolrd!','me') /* $php->db->delete() 刪除數(shù)據(jù)
$php->db->update() 更新數(shù)據(jù)
具體請參考Database類
*//* 模板操作,內(nèi)置smarty模板引擎
*/$php->tpl->assign('title','hello world!');
$php->tpl->display('index.html');
目錄規(guī)范
假設(shè)根目錄為$ROOT。
- $ROOT/apps: 應(yīng)用程序代碼,此目錄中的代碼是公用的,包括類、配置、模板、控制器、Model等。此目錄不得放置靜態(tài)文件,如js、css、jpg、html等,必須全部為.php文件。此目錄不允許直接通過HTTP訪問。
- $ROOT/apps/controllers: Web應(yīng)用的控制器類代碼
- $ROOT/apps/models: 數(shù)據(jù)模型封裝類代碼
- $ROOT/apps/configs: 配置文件,通過$php->config['db']['master']這樣的方式來訪問
- ROOT/apps/classes: 類庫,存放所有用戶定義的類,必須符合PSR-0規(guī)范,文件名必須為 {類名}.php,頂層命名空間必須為App
- $ROOT/apps/templates: 模板文件目錄
- 命名空間:如 `new App\Hello\Test` 類,會映射到 $ROOT/apps/classes/Hello/Test.php
- 配置文件:如 `$php->config['db']['master']` 或 `Swoole::getInstance()->config['db']['master']` 會映射到 $ROOT/apps/configs/db.php文件,db.php中必須返回數(shù)組,key為master。
- 數(shù)據(jù)模型:`model('UserInfo')`或者`$php->model->UserInfo` 會映射到$ROOT/apps/models/UserInfo.php
- $ROOT/static: 靜態(tài)文件目錄,比如js、css、jpg、html等。
- $ROOT/index.php: Web網(wǎng)站單一入口文件,可直接放到根目錄,或者單獨建立目錄存放,如$ROOT/webroot/index.php
- $ROOT/server.php: 服務(wù)器程序啟動入口。
控制器Controller
使用Swoole的MVC管理,控制器類必須符合以下規(guī)范:
- 代碼放置到`apps\controllers`目錄下
- 類名首字母必須為大寫
- 必須繼承自`Swoole\Controller`