初试hyperf

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了初试hyperf脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、安装要求

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
@H_419_18@

三、目录结构

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

四、配置路由

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

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

<?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; 命名空间; 
*/
@H_419_18@

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

控制器注解访问路由
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=                 //表前缀
@H_419_18@

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(); //按条件查询
@H_419_18@

更多查询方式可参考 官网: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
@H_419_18@

3、安装task

composer require hyperf/task:~2.0.0
@H_419_18@

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'],
    ],
@H_419_18@

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

composer require sy-records/think-template
@H_419_18@

安装完成后打开 /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/',
    ],
];
@H_419_18@

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

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

@H_419_18@

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

${name}
@H_419_18@

脚本宝典总结

以上是脚本宝典为你收集整理的初试hyperf全部内容,希望文章能够帮你解决初试hyperf所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: