前言
最近在學習swoole這個東西,就寫點心得吧。基於swoole的開源框架很多,優缺點自己百度,凡是有用到websocket和消費隊列選擇基於swoole的框架是不錯的選擇。好吧話不多說,吳大仙就介紹一下swoole的一個簡單入門吧
推薦(免費):swoole
##正文
swoole有兩個部分。一個是PHP擴展,用C開發的,這是核心。另一個是框架,像yii、TP、Laravel一樣,是PHP程式碼寫的。
swoole擴充功能本身提供了web伺服器功能,可以取代php-fpm。而如果只用swoole框架,就可以像其它PHP框架一樣,運行在nignx、apache等web伺服器中。
swoole框架像PHP框架一樣,適用於web開發。而swoole擴充是提供了更底層的伺服器通訊機制,可以使用UDP、TCP等協議,而不僅僅是http。
安裝方式上也不一樣,swoole擴充就像其它PHP擴充一樣安裝,可以用pecl,也可以編譯安裝。而swoole框架用composer引入之後安裝即可,或下載源碼後手動include/require。
另外,swoole框架依賴swoole擴展,是swoole擴展的應用實例。
框架-Swoole擴充-Swoole文件中心http://wiki.swoole.com/wiki/page/p-framework.html
swoole擴充功能是基礎,基於swoole擴展,可以做出多種框架,而不僅僅是web框架。
框架採用唯一介面物件機制。
呼叫框架的第一步,require('config.php');首先要包含config.php ,然後會產生$php物件。如果在Controller、Model、View中,透過$this->swoole來呼叫。如果在函數,或是其他被include的程式中,透過global $php來引用。
$php->db | #資料庫介面 |
##$php- >cache
快取系統介面 |
|
$php->tpl
Smarty範本引擎介面 |
|
$php->model
呼叫Model物件介面 |
|
#$php->mvc
MVC結構資料 |
|
#$php->plugin
外掛系統介面 |
|
#<?php
/*
导入config.php文件,这是调用框架必须的第一步
config.php会载入基本配置选项,和基本函数,并生成全局接口变量$php
在代码的任何位置处,都可以通过global $php来引用全局接口对象
*/
require('config.php');
$res = $php->db->query('select * from test_table'); //执行SQL语句,得到一个查询的结果,查询结果,可以获取数据
$res->fetch(); //获取单条数据。是字段-值,组成的关联数组。
$res->fetchall(); //获取全部
$data = array();
$data['title'] = 'hello wolrd!';
$data['author'] = 'me';
$php->db->insert($data,'test_table'); //将关联数组按照键值对应转为字段-值对应,插入到数据库表test_table中。
//insert into test_table(title,author) values('hello wolrd!','me')
/*
$php->db->delete() 删除数据
$php->db->update() 更新数据
具体请参考Database类
*/
/*
模板操作,内置smarty模板引擎
*/
$php->tpl->assign('title','hello world!');
$php->tpl->display('index.html');
?>
##目錄規格:
假設根目錄為$ROOT。
$ROOT/apps
$ROOT /apps:應用程式程式碼,此目錄中的程式碼是公用的,包括類,配置,模板,控制器,Model等。此目錄不得放置靜態文件,如js, css, jpg, html等,必須全部為.php檔案。此目錄不允許http直接存取。
Ø $ROOT/apps/controllers Web應用的控制器類別代碼
Ø $ROOT/apps/models 資料模型封裝類別代碼
Ø $ROOT/apps/ configs 設定文件,透過$php->config['db']['master']這樣來存取
Ø ROOT/apps/classes 類別庫,這裡存放所有使用者定義的類,必須符合psr -0規範,檔案名稱必須為 {類別名稱}.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中必須傳回數組,key為master。
² 資料模型:model('UserInfo')或$php->model->UserInfo 會對應到$ROOT/apps/models/UserInfo.php
#$ROOT/static
靜態檔案目錄,如js, css, jpg, html等。
$ROOT/index.php
web網站單一入口文件,可直接放到根目錄,或單獨建立目錄存放,如$ROOT/webroot/index.php
$ROOT/server.php
伺服器程式啟動入口。
控制器Controller
使用swoole的MVC管理,控制器類別必須符合下列規格
² 程式碼放置在apps\controllers目錄下
² 類別名稱首字母必須為大寫
² 必須繼承自Swoole\Controller
以上是帶你三分鐘學會swoole框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!