Swoole包含两个主要部分:一个是用C语言开发的PHP扩展,作为核心功能;另一个是通过PHP代码编写的框架,类似于yii、TP和Laravel。
Swoole扩展本身具备web服务器功能,可以取代php-fpm。当仅使用Swoole框架时,可以像其他PHP框架一样运行在Nginx、Apache等Web服务器中。
Swoole框架是一个适用于Web开发的PHP框架。与传统的PHP框架不同,Swoole框架基于Swoole扩展,提供了更底层的服务器通信机制,可以支持UDP、TCP等多种协议,而不仅仅限于HTTP。
安装方式也有所不同。Swoole扩展可以像其他PHP扩展一样通过PECL或者编译安装来获取。而Swoole框架则可以通过Composer引入后进行安装,或者手动下载源代码并进行手动引入。
需要注意的是,Swoole框架是基于Swoole扩展开发的应用实例,因此在使用Swoole框架之前需要先安装好Swoole扩展。
了解更多关于Swoole框架和Swoole扩展的详细信息可参考Swoole文档中心的链接:http://wiki.swoole.com/wiki/page/p-framework.html
Swoole扩展作为基础,可以用来开发各种类型的框架,不仅仅局限于Web框架。
推荐(免费):swoole
框架采用唯一接口对象机制。
调用框架的第一步,require(‘config.php’);首先要包含config.php ,然后会生成 p h p 对象。如果在 C o n t r o l l e r 、 M o d e l 、 V i e w 中,通过 php对象。 如果在Controller、Model、View中,通过 php对象。如果在Controller、Model、View中,通过this->swoole来调用。如果在函数,或者是其他被include的程序中,通过global $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: 应用程序代码,此目录中的代码是公用的,包括类、配置、模板、控制器、Model等。此目录不得放置静态文件,如js、css、jpg、html等,必须全部为.php文件。此目录不允许直接通过HTTP访问。
-
$ROOT/apps/controllers: Web应用的控制器类代码
-
$ROOT/apps/models: 数据模型封装类代码
-
R O O T / a p p s / c o n f i g s : 配置文件,通过 ROOT/apps/configs: 配置文件,通过 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等。
-
R O O T / i n d e x . p h p : W e b 网站单一入口文件,可直接放到根目录,或者单独建立目录存放,如 ROOT/index.php: Web网站单一入口文件,可直接放到根目录,或者单独建立目录存放,如 ROOT/index.php:Web网站单一入口文件,可直接放到根目录,或者单独建立目录存放,如ROOT/webroot/index.php
-
$ROOT/server.php: 服务器程序启动入口。
控制器Controller
使用Swoole的MVC管理,控制器类必须符合以下规范:
-
代码放置到
apps\controllers
目录下 -
类名首字母必须为大写
-
必须继承自
Swoole\Controller