热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初试hyperf

一、安装要求PHP7.3SwoolePHP扩展4.5,并关闭了ShortNameOpenSSLPHP扩展JSONPHP扩展PDOPHP扩展(如需要使用到MySQL客户端)Red




一、安装要求

PHP >= 7.3
Swoole PHP 扩展 >= 4.5,并关闭了 Short Name
OpenSSL PHP 扩展
JSON PHP 扩展
PDO PHP 扩展 (如需要使用到 MySQL 客户端)
Redis PHP 扩展 (如需要使用到 Redis 客户端)
Protobuf PHP 扩展 (如需要使用到 gRPC 服务端或客户端)


二、通过composer安装

composer create-project hyperf/hyperf-skeleton

三、目录结构

bin 执行hyperf启动脚本
app 控制器、异常、监听器、模型
config 配置文件
runtime 运行时产生的文件

四、配置路由

配置路由的方式有两种方式
第一种:/config/routes.php 中进行配置。
第二种:使用注解进行配置,这里博主采用注解方式进行配置。

在/app/controller/目录下创建控制器InfoController.php,并填写如下代码

declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Annotation\AutoController;
/**
* @AutoController()
*/
class InfoController extends AbstractController
{
public function index(){
return ['name'=>"hyperf"];
}
}
/**
* 这里就不要复制了!!!!!!
* @AutoController 为绝大多数简单的访问场景提供路由绑定支持,使用 @AutoController 时则 Hyperf 会自动解析所在类*
* 的所有 public 方法并提供 GET 和 POST 两种请求方式。
* 使用 @AutoController 注解时需 use Hyperf\HttpServer\Annotation\AutoController; 命名空间;
*/

驼峰命名的控制器,会自动转化为蛇形路由,以下为控制器与实际路由的对应关系示例:
控制器 注解 访问路由


控制器注解访问路由
MyDataController@AutoController()/my_data/index
MyDataController@AutoController()/mydata/index
MyDataController@AutoController(prefix="/data")/data/index

五、启动服务

在根目录下运行 php bin/hyperf.php ,访问 http://127.0.0.1:9501/info/index 即可(127.0.0.1修改成你自己的ip地址)


六、链接数据库

1、在根目录,找到.env 文件,修改数据库连接信息

DB_DRIVER=mysql
DB_HOST=192.168.37.128 //数据库地址
DB_PORT=3306 //端口
DB_DATABASE=demo //数据库名称
DB_USERNAME=root //账户
DB_PASSWORD=root //密码
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_PREFIX= //表前缀

2、打开控制器添加如下代码

注意:使用Db::table的时候一定要导入 use Hyperf\DbConnection\Db;
注意:使用Db::table的时候一定要导入 use Hyperf\DbConnection\Db;
注意:使用Db::table的时候一定要导入 use Hyperf\DbConnection\Db;
$row = Db::table('user')->first(); //查询一条
$users = Db::select('SELECT * FROM user;'); //查询所有
$id = Db::table('user')->value('id'); //获取单个值
$users = Db::table('user')->where([
['status', '=', '1'],
['gender', '=', '1'],
])->get(); //按条件查询

更多查询方式可参考 官网:https://hyperf.wiki/2.1/#/zh-cn/db/quick-start


七、视图

1、安装视图组件:composer require hyperf/view:~2.0.0 //博主使用的是hyperf 2.0.0版本的,所有安装其他组件也要和hyperf版本一致,否则无法安装成功!!!!!!

2、跟目录执行如下命令,会在/config/autoload下生成view配置文件

php bin/hyperf.php vendor:publish hyperf/view

3、安装task

composer require hyperf/task:~2.0.0

4、配置静态资源和task
打开/config/autoload/server.php,添加如下代码

'settings' => [
...其他配置不用修改

// Task Worker 数量,根据您的服务器配置而配置适当的数量
'task_worker_num' => 8,
// 因为 `Task` 主要处理无法协程化的方法,所以这里推荐设为 `false`,避免协程下出现数据混淆的情况
'task_enable_coroutine' => false,
// 静态资源
'document_root' => BASE_PATH . '/public',
'enable_static_handler' => true,
],
'callbacks' => [
SwooleEvent::ON_WORKER_START => [Hyperf\Framework\Bootstrap\WorkerStartCallback::class, 'onWorkerStart'],
SwooleEvent::ON_PIPE_MESSAGE => [Hyperf\Framework\Bootstrap\PipeMessageCallback::class, 'onPipeMessage'],
SwooleEvent::ON_WORKER_EXIT => [Hyperf\Framework\Bootstrap\WorkerExitCallback::class, 'onWorkerExit'],
SwooleEvent::ON_TASK => [Hyperf\Framework\Bootstrap\TaskCallback::class, 'onTask'],
SwooleEvent::ON_FINISH => [Hyperf\Framework\Bootstrap\FinishCallback::class, 'onFinish'],
],

5、安装模板引擎,博主已ThinkTemplate(thinkphp) 引擎为例

composer require sy-records/think-template

安装完成后打开 /config/autoload/view.php,将 “engine”的值修改为ThinkEngine::class

use Hyperf\View\Engine\ThinkEngine;
use Hyperf\View\Mode;
return [
'engine' => ThinkEngine::class,
'mode' => Mode::SYNC,
'config' => [
'view_path' => BASE_PATH . '/storage/view/', //模板存放路径
'cache_path' => BASE_PATH . '/runtime/view/',
],
];

在根目录创建 /storage/view/index.html文件,如果目录不存在就手动创建一下。
在控制器中调用模板

use Hyperf\View\RenderInterface; //引入
public function index(RenderInterface $render){
$name="hyperf";
return $render->render('index', ['name' => $name]); //渲染模板并输出
}

index.html代码如下,因采用了thinkphp的模板引擎,所有直接使用thinkphp的模板语法即可:

${name}


推荐阅读
author-avatar
黄ll明雪_742
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有