软件介绍
Hyperf是一款非常专业且优秀的企业级协程框架,该框架具有性能高、灵活性高的特点,是基于Swoole4.5+实现的,框架组件库除了常见的协程版的MySQL客户端、Redis客户端外,还提供了其它多种不同的组件,包括JSONRPC服务器及客户端、AMQP组件等,省去了自己实现对应协程版本的麻烦,满足丰富的技术场景和业务场景,在框架设计上进行了大量的优化,从而能够确保超高性能的输出,同时为组件进行了大量的单元测试以保证逻辑的正确,也维护了高质量的文档,欢迎有需要的用户下载体验
软件功能
高性能
全协程异步实现,性能远超所有传统PHP-FPM框架
生产可用
经历过长时间生产环境考验的企业级框架设计,稳定可靠
微服务
健全的微服务体系,gRPC、JSONRPC、服务发现、熔断,灵活完善
组件丰富
全组件化设计,超多常用组件,绝大部分组件均可复用于其它框架
分布式
基于相关组件可快速搭建出企业级的分布式系统,极速扩容
自动化测试
完备的自动化测试,从开发到生产交付全流程保障
软件特色
简单化协程化组件化
开箱即用,快人一步
官方提供超多常用组件,随用随取
原生协程,超高性能
原生协程能力支持,性能强悍
丰富组件,任意组合
全组件化设计,可复用于其它框架
生产级别的协程框架
由Swoole4原生协程强力驱动
官方教程
通过配置文件定义路由路由的文件位于hyperf-skeleton项目的config/routes.php,下面是一些常用的用法示例。
通过注解来定义路由Hyperf提供了极其强大和方便灵活的注解功能,在路由的定义上也毫无疑问地提供了注解定义的方式,Hyperf提供了@Controller和@AutoController两种注解来定义一个Controller,此处仅做简单的说明,更多细节请查阅路由章节。
通过@AutoController注解定义路由@AutoController为绝大多数简单的访问场景提供路由绑定支持,使用@AutoController时则Hyperf会自动解析所在类的所有public方法并提供GET和POST两种请求方式。
使用@AutoController注解时需useHyperf\HttpServer\Annotation\AutoController;命名空间;
驼峰命名的控制器,会自动转化为蛇形路由,以下为控制器与实际路由的对应关系示例:
通过@Controller注解定义路由@Controller为满足更细致的路由定义需求而存在,使用@Controller注解用于表明当前类为一个Controller类,同时需配合@RequestMapping注解来对请求方法和请求路径进行更详细的定义。
我们也提供了多种快速便捷的Mapping注解,如@GetMapping、@PostMapping、@PutMapping、@PatchMapping、@DeleteMapping5种便捷的注解用于表明允许不同的请求方法。
处理HTTP请求Hyperf是完全开放的,本质上没有规定您必须基于某种模式下去实现请求的处理,您可以采用传统的MVC模式,亦可以采用RequestHandler模式来进行开发。
我们以MVC模式来举个例子:
在app文件夹内创建一个Controller文件夹并创建IndexController.php如下,index方法内从请求中获取了id参数,并转换为字符串类型返回到客户端。
依赖自动注入依赖自动注入是Hyperf提供的一个非常强大的功能,也是保持框架灵活性的根基。
Hyperf提供了两种注入方式,一种是大家常见的通过构造函数注入,另一种是通过@Inject注解注入,下面我们举个例子并分别以两种方式展示注入的实现;
假设我们存在一个\App\Service\UserService类,类中存在一个getInfoById(int$id)方法通过传递一个id并最终返回一个用户实体,由于返回值并不是我们这里所需要关注的,所以不做过多阐述,我们要关注的是在任意的类中获取UserService并调用里面的方法,一般的方法是通过newUserService()来实例化该服务类,但在Hyperf下,我们有更优的解决方法。
通过构造函数注入只需在构造函数的参数内声明参数的类型,Hyperf会自动注入对应的对象或值。
通过@Inject注解注入只需对对应的类属性通过@var声明参数的类型,并使用@Inject注解标记属性,Hyperf会自动注入对应的对象或值。
使用@Inject注解时需useHyperf\Di\Annotation\Inject;命名空间;
通过上面的示例我们不难发现$userService在没有实例化的情况下,属性对应的类对象被自动注入了。
不过这里的案例并未真正体现出依赖自动注入的好处及其强大之处,我们假设一下UserService也存在很多的依赖,而这些依赖同时又存在很多其它的依赖时,new实例化的方式就需要手动实例化很多的对象并调整好对应的参数位,而在Hyperf里我们就无须手动管理这些依赖,只需要声明一下最终使用的类即可。
而当UserService需要发生替换等剧烈的内部变化时,比如从一个本地服务替换成了一个RPC远程服务,也只需要通过配置调整依赖中UserService这个键值对应的类为新的RPC服务类即可。
启动Hyperf服务由于Hyperf内置了协程服务器,也就意味着Hyperf将以CLI的形式去运行,所以在定义好路由及实际的逻辑代码之后,我们需要在项目根目录并通过命令行运行phpbin/hyperf.phpstart来启动服务。
当Console界面显示服务启动后便可通过cURL或浏览器对服务正常发起访问了,默认服务会提供一个首页https://127.0.0.1:9501/,对于本章示例引导的情况下,也就是上面的例子所对应的访问地址为https://127.0.0.1:9501/index/info?id=1。
重新加载代码由于Hyperf是持久化的CLI应用,也就意味着一旦进程启动,已解析的PHP代码会持久化在进程中,也就意味着启动服务后您再修改的PHP代码不会改变已启动的服务,如您希望服务重新加载您修改后的代码,您需要通过在启动的Console中键入CTRL+C终止服务,再重新执行启动命令phpbin/hyperf.phpstart完成启动和重新加载。
Tips:您也可以将启动Server的命令配置在IDE上,便可直接通过IDE的启动/停止操作快捷的完成启动服务或重启服务的操作。且非视图开发时可以采用TDD(Test-DrivenDevelopment)测试驱动开发来进行开发,这样不仅可以省略掉服务重启和频繁切换窗口的麻烦,还可保证接口数据的正确性。
另外,在文档协程组件库一章中提供了多种由社区开发者支持的热更新/热重载的解决方案,如仍希望采用热更新/热重载方案可再深入了解。
多端口监听Hyperf支持监听多个端口,但因为callbacks中的对象直接从容器中获取,所以相同的Hyperf\HttpServer\Server::class会在容器中被覆盖。所以我们需要在依赖关系中,重新定义Server,确保对象隔离。
WebSocket和TCP等Server同理。
同时路由文件,或者注解也需要指定对应的server,如下:
路由文件config/routes.php
注解
事件除上述提到的Event::ON_REQUEST事件,框架还支持其他事件,所有事件名如下。
更新日志
v2.1.10-2021-03-15修复
修复当使用Arr::forget方法在key为integer且不存在时,执行报错的问题。
#3351修复hyperf/validation组件中,FormRequest无法从协程上下文中获取到修改后的ServerRequest,从而导致验证器验证失败的问题。
#3356修复hyperf/testing组件中,客户端Hyperf\Testing\Client无法模拟构造正常的UriInterface的问题。
#3363修复在入口文件bin/hyperf.php中自定义的常量,无法在命令server:watch中使用的问题。
#3365修复当使用协程风格服务时,如果用户没有配置pid_file,仍然会意外生成runtime/hyperf.pid文件的问题。
优化#3364优化命令phar:build,你可以在不使用php脚本的情况下执行phar文件,就像使用命令./composer.phar而非phpcomposer.phar。
#3367优化使用gen:model生成模型字段的类型注释时,尽量读取自定义转换器转换后的对量类型。
v2.1.9-2021-03-08修复#3326修复使用JsonEofPacker无法正确解包自定义eof数据的问题。
#3330修复因其他协程修改静态变量$constraints,导致模型关系查询错误的问题。
新增#3325为Crontab注解增加enable参数,用于控制当前任务是否注册到定时任务中。
优化#3338优化了testing组件,使模拟请求的方法运行在独立的协程当中,避免协程变量污染。
v2.1.8-2021-03-01修复#3301修复hyperf/cache组件,当没有在注解中设置超时时间时,会将超时时间强制转化为0,导致缓存不失效的问题。
新增#3310新增方法Blueprint::comment(),可以允许在使用Migration的时候,设置表注释。
#3311新增方法RouteCollector::getRouteParser,可以方便的从RouteCollector中获取到RouteParser对象。
#3316允许用户在hyperf/db组件中,注册自定义数据库适配器。
优化#3308优化WebSocket服务,当找不到对应路由时,直接返回响应。
#3319优化从连接池获取连接的代码逻辑,避免因重写低频组件导致报错,使得连接被意外丢弃。
新组件孵化rpc-multiplex基于Channel实现的多路复用RPC组件。
db-pgsql适配于hyperf/db的PgSQL适配器。
Tags:Hyperf下载,企业级协程框架,协程框架
小编点评:涉密硬盘清除工具,彻底破坏系统并不.
下载小编点评:软件介绍NqLive网络电视起初是NBA.
下载小编点评:早安我的少年日版是一款具有女性向特色.
下载小编点评:祛魅格心测试版是一款剧情任务丰富的.
下载小编点评:龙城盛典游戏将为您带来最最经典的传奇内容,经典.
下载小编点评:传奇家族手游是一款横版的角色扮演的.
下载小编点评:攻速冰雪手游是一款热血十足的传奇游.
下载小编点评:宝鼎传奇之决战沙城手游是一款经典传奇.
下载小编点评:卡哇伊传奇游戏是一款超棒的动作类游.
下载小编点评:星际跳跃中文版是一款星际跳跃手机版系列的闯关横版游.
下载小编点评:贤者之石起源内购破解版是一款非常棒的打.
下载小编点评:海底猎杀模拟器游戏让你体验海底射击.
下载小编点评:超级英雄决斗游戏是很好玩的动作各栋类题材.
下载皇家火箭人官方版下载-皇家火箭人游戏下载v1.5.2 安卓版
2018有杀气童话魅族版下载-有杀气童话手游魅族版下载v1.9.0 安卓版
绻绻如意大字版软件手机版下载-绻绻如意大字版app下载v1.0.0 安卓最新版
代号105手游下载-代号105官方版下载v1.0.4 安卓版
果盘斩妖录变态版下载-斩妖录手游bt果盘版下载v1.3001 安卓送50连抽版
幻灵仙境新春版本下载-幻灵仙境红包版下载v6.3.0 安卓版
口袋妖怪复刻当乐平台下载-口袋妖怪复刻当乐版本下载v7.1.0 安卓客户端
传奇来了胡军版手游百度版下载-传奇来了胡军版百度版下载v1.0.0 安卓最新版
凌云江湖行首测版下载-凌云江湖行测试版下载v1.1 安卓最新版
剑梦三界游戏-剑梦三界手游(暂未上线)v1.1.0 安卓版
暗黑血统2最新国际版下载-暗黑血统2国际版下载v2.1 安卓版
挂机啪啪啪官网下载-挂机啪啪啪手游下载v2.3.2 安卓最新版
全民掌门游戏下载-全民掌门手游下载v1.0.0 安卓版