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框架快速入门的更多相关文章

  1. flask 框架快速入门

    flask 框架快速入门 搭建一个简易flask项目 首先使用 Pycharm创建flask项目 运行flask项目 1.使用Pycharm搭建flask项目 (如果Pycharm新建项目中未出现该图 ...

  2. struts2框架快速入门小案例

    struts2快速入门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导入jar包 struts2的目录结构: a ...

  3. Scrapy框架-scrapy框架快速入门

    1.安装和文档 安装:通过pip install scrapy即可安装. Scrapy官方文档:http://doc.scrapy.org/en/latest Scrapy中文文档:http://sc ...

  4. IDEA工具下Mybaties框架快速入门程序

    本篇文章介绍在IDEA工具下mybatis快速入门程序分为以下五步 ​ 1 添加依赖包 ​ 2 编写pojo对象 ​ 3 编写映射文件 ​ 4 编写核心配置文件 ​ 5 测试框架 详细如下 建立Mod ...

  5. vue-element-admin框架快速入门

    年底了,最近公司也不是太忙,感觉今年互联网行业都遇到寒冬,不在是前两年像热的发烫的赛道.这几天完成公司项目系统的优化和升级,目前准备想开发一套前后端分离的系统.       现在java最新最火的技术 ...

  6. mybatis框架快速入门

    通过快速入门示例,我们发现使用mybatis 是非常容易的一件事情,因为只需要编写 Dao 接口并且按照 mybatis要求编写两个配置文件,就可以实现功能.远比我们之前的jdbc方便多了.(我们使用 ...

  7. java框架--快速入门

    spring快速入门    1.创建项目        1.1创建项目文件夹        1.2启动idea ->文件->打开->点击创建的项目文件夹        1.3右键创建 ...

  8. (Spring Boot框架)快速入门

    Spring Boot 系列文章推荐 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring Boot 静态资源处理 今天介绍一 ...

  9. Bootstrap前端框架快速入门专题

    1.Bootstrap简介 Bootstrap,出自自 Twitter,是目前最受欢迎的前端框架. Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的前端框架,它简洁灵活,使得 W ...

随机推荐

  1. 记一名软件实施自学转Java开发,附学习计划

    2015年毕业到现在已经3年了,而我转型开发已经有一年的时间了.写这篇文章除了记录,主要还是想分享一些经历给想要转型开发的同学们,不要走那些我走过的弯路. 2015年入职了第一家公司,当时是做的分销系 ...

  2. vue二级路由跳转后外部引入js失效问题解决方案

    vue路由可以通过children嵌套,于是可以形成二级路由等等... 案例如下: routes: [ { path: '/', name: 'dy', component: dy, children ...

  3. 48.rocketMQ

    一.简介 RocketMQ是阿里旗下的一款产品,分为开源版本和非开源版本.相比于ActiveMQ,RocketMQ支持顺序消费.事务机制.失败重试机制.消息可查询.消息订阅.较强的水平扩展能力.亿级堆 ...

  4. shiro原理及其运行流程介绍

    shiro原理及其运行流程介绍 认证执行流程 1.通过ini配置文件创建securityManager 2.调用subject.login方法主体提交认证,提交的token 3.securityMan ...

  5. appium+python 存在多个类时,不用每次都初始化解决办法

    appium+python写自动化测试用例时,为了代码的可维护性,分成不同的类是很常见的办法, 但是在运行时,每一个类都要初始化一次,即每次都会重启应用,这很麻烦,通过__new__可进行多个类之间的 ...

  6. NPOI设置水平、垂直居中

    C#语法: string fs = "@report.xls";//文件路径 FileStream excelPath = File.Open(@fs, FileMode.Open ...

  7. Codeforces Round #517

    传送门 A. Cram Time 你有一本书,阅读第\(i\)页需要花费\(i\)的时间.你第一天有\(a\)的时间,第二天有\(b\)的时间,问你的总阅读页数的最大值. Input: 一行包含\(2 ...

  8. 语言模型预训练方法(ELMo、GPT和BERT)——自然语言处理(NLP)

    1. 引言 在介绍论文之前,我将先简单介绍一些相关背景知识.首先是语言模型(Language Model),语言模型简单来说就是一串词序列的概率分布.具体来说,语言模型的作用是为一个长度为m的文本确定 ...

  9. 关于 maven 打包直接运行的 fat jar (uber jar) 时需要包含本地文件系统第三方 jar 文件的问题

    关于maven打包fat jar (uber jar) 时需要包含本地文件系统第三方jar文件的问题,今天折腾了一整天.最后还是用了spring boot来做.下面是几篇关于打包的有参考价值的文章,以 ...

  10. ZigZag编码

    ZigZag编码 在网络传输和数据存储场景中,需要对数据进行压缩.数据压缩的算法非常多,但大部分的数据压缩算法的原理是通过某种编码方式不存储数据中的0比特位,因此0比特位越多,数据压缩的效果越好.Zi ...