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 ,然后会生成$php对象。 如果在Controller、Model、View中,通过$this->swoole来调用。如果在函数,或者是其他被include的程序中,通过global $php来引用。
$php->db | 数据库接口 |
$php->cache | 缓存系统接口 |
$php->tpl | Smarty模板引擎接口 |
$php->model | 调用Model对象接口 |
$php->mvc | MVC结构数据 |
$php->plugin | 插件系统接口 |
/* 导入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: 数据模型封装类代码
- $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`