Hyperf框架快速入门指南:构建高性能HTTP服务
前言
Hyperf是一款基于Swoole扩展的高性能PHP协程框架,专为微服务和中间件开发而设计。本文将带您快速了解如何使用Hyperf构建一个基础的HTTP服务,涵盖路由定义、控制器编写、依赖注入等核心功能。
路由系统详解
Hyperf提供了灵活的路由定义方式,支持配置文件和注解两种形式。
配置文件定义路由
在config/routes.php
中,可以使用Router类定义路由:
use Hyperf\HttpServer\Router\Router;
// GET请求示例
Router::get('/user', 'App\Controller\UserController::index');
// POST请求示例
Router::post('/user', 'App\Controller\UserController@store');
// 多方法请求示例
Router::addRoute(['GET', 'POST'], '/multi', [\App\Controller\UserController::class, 'multi']);
注解定义路由
Hyperf的注解路由提供了更优雅的定义方式,主要有两种形式:
- AutoController注解 - 自动映射控制器方法
use Hyperf\HttpServer\Annotation\AutoController;
#[AutoController]
class UserController {
// 自动生成 /user/index 路由
public function index() {}
}
- Controller+RequestMapping注解 - 更精细的控制
use Hyperf\HttpServer\Annotation\Controller;
use Hyperf\HttpServer\Annotation\GetMapping;
#[Controller(prefix: "/api/user")]
class UserController {
#[GetMapping(path: "info")]
public function info() {}
}
控制器开发实践
控制器是处理HTTP请求的核心组件。下面是一个完整的控制器示例:
<?php
declare(strict_types=1);
namespace App\Controller;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Annotation\AutoController;
use App\Service\UserService;
#[AutoController(prefix: "/api")]
class UserController
{
public function __construct(private UserService $userService)
{
}
public function info(RequestInterface $request)
{
$userId = $request->input('user_id', 0);
return $this->userService->getUserInfo($userId);
}
}
依赖注入机制
Hyperf的依赖注入系统是其核心特性之一,提供了两种注入方式:
- 构造函数注入
public function __construct(
private UserService $userService,
private LoggerInterface $logger
) {}
- 属性注解注入
use Hyperf\Di\Annotation\Inject;
#[Inject]
private UserService $userService;
依赖注入系统会自动解析所有依赖关系,大大简化了对象管理。
服务启动与管理
启动Hyperf服务使用以下命令:
php bin/hyperf.php start
由于Hyperf是常驻内存的CLI应用,代码修改后需要重启服务才能生效。开发时可以考虑以下方案:
- 使用IDE的启动/停止功能快速重启
- 采用TDD测试驱动开发
- 使用社区提供的热更新组件
高级配置
多端口监听
Hyperf支持监听多个端口,配置示例:
- 首先在
dependencies.php
中定义独立服务:
return [
'InnerHttp' => Hyperf\HttpServer\Server::class,
];
- 然后在
server.php
中配置多个服务:
return [
'servers' => [
[
'name' => 'http',
'type' => Server::SERVER_HTTP,
'port' => 9501,
'callbacks' => [
Event::ON_REQUEST => [Hyperf\HttpServer\Server::class, 'onRequest'],
],
],
[
'name' => 'innerHttp',
'type' => Server::SERVER_HTTP,
'port' => 9502,
'callbacks' => [
Event::ON_REQUEST => ['InnerHttp', 'onRequest'],
],
],
]
];
事件系统
Hyperf支持丰富的Swoole事件,常用事件包括:
- ON_REQUEST: 请求处理事件
- ON_WORKER_START: Worker进程启动事件
- ON_TASK: 异步任务事件
- ON_FINISH: 异步任务完成事件
结语
通过本文,您已经了解了Hyperf框架的基本使用方法。从路由定义到控制器开发,从依赖注入到服务管理,Hyperf提供了一套完整的高性能解决方案。后续您可以进一步探索Hyperf的数据库组件、微服务支持、协程特性等高级功能,构建更强大的应用系统。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考