详解swoole框架快速入门

news2024/9/28 0:39:23

在这里插入图片描述
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对象。如果在ControllerModelView中,通过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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2167413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产人形机器人突破,教会人形机器人如何像人类一样移动

与远在大洋彼岸的特斯拉机器人使用相同的训练设备,Humanoid Robot(上海)有限公司正在使用Xsens动作捕捉系统和ai训练人形机器人模仿人类运动,执行复杂任务。 关键要点: 人形机器人市场正在快速扩张:人形机器人市场将在未来大幅增长,据统计数…

傅里叶变换的python实现

周期信号的频谱   为了能既方便又明白地表示一个信号在不同频率下的幅值和相位,可以采用成为频谱图的表示方法。   在傅里叶分析中,把各个分量的幅度|Fn|或 Cn 随着频率nω1的变化称为信号的幅度谱。   而把各个分量的相位 φn 随角频率 nω1 变化…

ZUploader 之 文件上传

文件上传是前端开发很常用的一个功能, 通常文件上传都是异于表单提交, 使用起来配置繁多, 校验不统一, 展示不统一。 效果对比 特点 简化使用数据双向绑定样式统一带预览和下载功能 依赖 封装的组件 FileViewDialog (文件预览与下载,不需要此功能的话,可删除) 文件返回接口…

用户体验分享 | YashanDB V23.2.3安装部署

近期崖山新版体验过程中,总能看到用户提问:openssl版本问题、monit命令找不到问题、yashan用户权限问题、数据库重装问题 今日整理了多位用户的安装经验,希望能够帮助到大家~ 1.Lucifer三思而后行 :YashanDB 个人版数据库安装部…

稳居赛道销量前三的制造业巨头:数据安全建设的高效实践

作为一家迅速扩展的全球化制造企业,我们的分支和业务遍布国内多个城市及海外,员工流动频繁,终端设备多样,研发流程复杂。因此,我们需要一个灵活且强大的数据安全策略。经过深入的市场调研和严格POC测试,我们…

使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…

虚拟机的安装和使用

一、虚拟机的简单介绍 虚拟机可以使你在一台机器上同时运行二个或更多Windows、LINUX等系统,它可以模拟一个标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器等。 二、虚拟机…

案例|高动态厘米级监测!广东这些长大桥有了北斗“守护者”

随着桥梁交通流量快速提升,加上受到恶劣使用环境、荷载作用、年限过长等因素影响,近年来,因桥梁损害引发的安全事故时有发生。伴随着传感设备、数字通讯网络、数据分析方法等新技术和新设备的发展,为桥梁管养提供了更多有效的检测…

09_行级锁的加锁流程

MySQL 的加锁流程 文章目录 MySQL 的加锁流程简介记录锁、间隙锁和临键锁概述行级锁加锁流程示例流程两个原则,两个优化,一个 BUG两个原则两个优化一个 BUG示例1-主键(唯一)索引示例 2-普通索引 总结 简介 在 MySQL InnoDB 存储引…

理解C语言之深入理解指针(三)

目录 1. 字符指针变量 2. 数组指针变量 2.1 数组指针变量是什么? 2.2 数组指针变量怎么初始化 3. ⼆维数组传参的本质 4. 函数指针变量 4.1 函数指针变量的创建 4.2 函数指针变量的使⽤ 4.3 两段有趣的代码 4.3.1 typedef 关键字 5. 函数指针数组 6. 转移…

Linux递归找出目录下最近被修改文件(最近一段时间内被修改过的最新文件)(最近修改文件、最新文件、查找文件)(监控目录、监控mysql文件)

文章目录 命令1:找出目录下最近60分钟内修改的最新文件命令解析: 命令2:找出目录下最近60分钟内修改的最新n个文件 命令1:找出目录下最近60分钟内修改的最新文件 find /ky_data/mysql -type f -mmin -60 -exec ls -ltr {} | tai…

【LeetCode每日一题】——LCP 51.烹饪料理

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 回溯 二【题目难度】 简单 三【题目编号】 LCP 51.烹饪料理 四【题目描述】 欢迎各位勇者来…

【工具分享】NoWay勒索病毒解密工具

前言 NoWay勒索软件首次出现在2023年,并迅速引起了网络安全领域的关注。它是一种典型的加密勒索软件,主要通过恶意电子邮件附件或不安全的下载链接传播。一旦成功感染系统,NoWay会加密受害者的文件,并要求支付赎金以恢复文件访问…

Redis(初步认识和安装)

初识Redis 认识NoSQLSQL结构化:structure关联的:RelationalSQL查询ACID NoSQL非结构化无关联的非SQLBASE 认识Redis安装Redis 认识NoSQL SQL和NoSQL比较 SQL 结构化:structure 数据库中表的字段都有固定的结构 关联的:Relati…

【c语言数据结构】栈的详解! 超级详细!(模拟实现,OJ练习题)

栈的概念: 栈:像是一种容器,东西只能从一个地方进,一个地方出,且后进先出!这是其和队列(先进先出,像排队一样,先到先得)的本质区别 ⼀种特殊的线性表&#…

“JY901传感器“学习笔记

目录 一、产品概述 二、产品功能介绍 2.1、轴向说明 2.2、模块校准 2.3、姿态角 2.4、大地坐标系、地心地固坐标系、站心坐标系 三、参考文献 一、产品概述 模块集成高精度的陀螺仪、加速度计、地磁场传感器,采用高性能的微处理器和先进的动力解算与卡尔曼动…

两种不同方式实现交换机路由器的登录Console+Telnet的实现

一、背景及原理 1.Telnet 作为一种远程登录协议,1969年发明诞生于美国国防部高级研究计划局网络工作小组的研究员,Tenlet的出现为后续相关技术的发展奠定了基础。 2.Telnet通常用于远程登录应用中,对本地和远端进行网络设备配置、监控、维护,可以通过Telnet方式在一台设备…

博睿数据受邀亮相NebulaGraph Meetup北京站

9 月 21 日,北京站 nMeetup 如期而至,一场以 GraphRAG 和人工智能技术融合为主题的开发者聚会,在金秋的首都拉开帷幕。8 位讲师和 140 多位来自五湖四海的行业伙伴们相聚一堂,共同探讨 GraphRAG & AI 的最新发展和应用实践&am…

卷轴模式:一种新型的电子商务营销策略

随着电子商务行业的蓬勃发展,各类创新营销策略层出不穷,旨在吸引更多消费者并提升销售额。在这之中,卷轴模式以其独特的优势和可观的收益逐渐受到业界renxb001的关注。本文将深入探讨卷轴模式的概念、优势、应用场景以及如何参与其中。 卷轴…

关联式容器——map与set

map与set map与set的使用序列式容器与关联式容器概念序列式容器 (Sequence Containers)常见的序列式容器: 关联式容器 (Associative Containers)常见的关联式容器: set的定义与使用set类的介绍set的构造和迭代器set的增删查(无改)…