帶你三分鐘學(xué)會(huì)swoole框架

帶你三分鐘學(xué)會(huì)swoole框架

前言

最近在學(xué)習(xí)swoole這個(gè)東西,就寫(xiě)點(diǎn)心得吧。基于swoole的開(kāi)源框架很多,優(yōu)缺點(diǎn)自己百度,凡是有用到websocket和消費(fèi)隊(duì)列選擇基于swoole的框架是不錯(cuò)的選擇。好吧話不多說(shuō),吳大仙就介紹一下swoole的一個(gè)簡(jiǎn)單入門(mén)吧

推薦(免費(fèi)):swoole

正文

swoole有兩個(gè)部分。 一個(gè)是php擴(kuò)展,用C開(kāi)發(fā)的,這是核心。 另一個(gè)是框架,像YII、TP、laravel一樣,是PHP代碼寫(xiě)的。

swoole擴(kuò)展本身提供了web服務(wù)器功能,可以替代php-fpm。 而如果僅僅用swoole框架,可以像其它PHP框架一樣,運(yùn)行在nignx、apache等web服務(wù)器中。

swoole框架像PHP框架一樣,適用于web開(kāi)發(fā)。 而swoole擴(kuò)展是提供了更底層的服務(wù)器通信機(jī)制,可以使用udp、TCP等協(xié)議,而不僅僅是http

安裝方式上也不一樣,swoole擴(kuò)展像其它PHP擴(kuò)展一樣安裝,可以用pecl,也可以編譯安裝。而swoole框架用composer引入之后安裝即可,或者下載源碼后手動(dòng)include/require

另外,swoole框架依賴swoole擴(kuò)展,是swoole擴(kuò)展的應(yīng)用實(shí)例。

框架-Swoole擴(kuò)展-Swoole文檔中心 http://wiki.swoole.com/wiki/page/p-framework.html

swoole擴(kuò)展是基礎(chǔ),基于swoole擴(kuò)展,可以做出多種框架,而不僅僅是web框架。

?

框架采用唯一接口對(duì)象機(jī)制。

調(diào)用框架的第一步,require(‘config.php’);首先要包含config.php ,然后會(huì)生成$php對(duì)象。 如果在Controller、Model、View中,通過(guò)$this->swoole來(lái)調(diào)用。如果在函數(shù),或者是其他被include的程序中,通過(guò)global $php來(lái)引用。

?

$php->db 數(shù)據(jù)庫(kù)接口
$php->cache 緩存系統(tǒng)接口
$php->tpl Smarty模板引擎接口
$php->model 調(diào)用Model對(duì)象接口
$php->mvc MVC結(jié)構(gòu)數(shù)據(jù)
$php->plugin 插件系統(tǒng)接口
<?php  /*  導(dǎo)入config.php文件,這是調(diào)用框架必須的第一步  config.php會(huì)載入基本配置選項(xiàng),和基本函數(shù),并生成全局接口變量$php  在代碼的任何位置處,都可以通過(guò)global $php來(lái)引用全局接口對(duì)象  */ require('config.php');  $res = $php->db->query('select * from test_table'); //執(zhí)行SQL語(yǔ)句,得到一個(gè)查詢的結(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ù)組按照鍵值對(duì)應(yīng)轉(zhuǎn)為字段-值對(duì)應(yīng),插入到數(shù)據(jù)庫(kù)表test_table中。  //insert into test_table(title,author) values('hello wolrd!','me')  /*  $php->db->delete() 刪除數(shù)據(jù)  $php->db->update() 更新數(shù)據(jù)  具體請(qǐng)參考Database類  */ /*  模板操作,內(nèi)置smarty模板引擎  */ $php->tpl->assign('title','hello world!');  $php->tpl->display('index.html');  ?>

目錄規(guī)范:

假設(shè)根目錄為$ROOT。

$ROOT/apps

$ROOT?/apps:應(yīng)用程序代碼,此目錄中的代碼是公用的,包括類,配置,模板,控制器,Model等。此目錄不得放置靜態(tài)文件,如JS, css, jpg, html等,必須全部為.php文件。此目錄不允許http直接訪問(wèn)。

???$ROOT/apps/controllers Web應(yīng)用的控制器類代碼

???$ROOT/apps/models 數(shù)據(jù)模型封裝類代碼

???$ROOT/apps/configs 配置文件,通過(guò)$php->config[‘db’][‘master’]這樣來(lái)訪問(wèn)

???ROOT/apps/classes 類庫(kù),這里存放所有用戶定義的類,必須符合psr-0規(guī)范,文件名必須為?{類名}.php,頂層命名空間必須為App

???$ROOT/apps/templates 模板文件目錄

?

2? 命名空間:如?new AppHelloTest 類,會(huì)映射到?$ROOT/apps/classes/Hello/Test.php

2? 配置文件:如?$php->config[‘db’][‘master’] 或?Swoole::getInstance()->config[‘db’][‘master’] 會(huì)映射到$ROOT/apps/configs/db.php文件,db.php中必須返回?cái)?shù)組,key為master。

2? 數(shù)據(jù)模型:model(‘UserInfo’)或者$php->model->UserInfo 會(huì)映射到$ROOT/apps/models/UserInfo.php

$ROOT/Static

靜態(tài)文件目錄,比如js, css, jpg, html等。

$ROOT/index.php

web網(wǎng)站單一入口文件,可直接放到根目錄,或者單獨(dú)建立目錄存放,如$ROOT/webroot/index.php

$ROOT/server.php

服務(wù)器程序啟動(dòng)入口。

控制器Controller

使用swoole的MVC管理,控制器類必須符合下列規(guī)范

2? 代碼放置到appscontrollers目錄下

2? 類名首字母必須為大寫(xiě)

2? 必須繼承自SwooleController

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享