本文目录导读:

我来详细介绍 PHP Hyperf Admin 的相关内容。
Hyperf Admin 概述
Hyperf Admin 是一个基于 Hyperf 框架的后台管理系统的扩展包,基于 Swoole 实现高性能的常驻内存框架。
安装步骤
环境要求
- PHP >= 8.0 - Swoole >= 4.5 - Hyperf >= 2.2 - Composer
创建 Hyperf 项目
# 创建项目 composer create-project hyperf/hyperf-skeleton # 进入项目目录 cd hyperf-skeleton
安装 Hyperf Admin
composer require hyperf/admin
发布资源
php bin/hyperf.php vendor:publish hyperf/admin
基本配置
修改配置文件
// config/autoload/admin.php
return [
'route' => [
'prefix' => '/admin', // 后台路由前缀
'middleware' => ['auth:admin'], // 中间件
],
'auth' => [
'guard' => 'admin',
'model' => App\Model\AdminUser::class,
],
'upload' => [
'disk' => 'public',
'directory' => 'uploads',
],
];
创建控制器
基础控制器示例
<?php
namespace App\Controller\Admin;
use HyperfAdmin\Admin\Controller\AbstractAdminController;
class UserController extends AbstractAdminController
{
protected $model = User::class;
protected $pageName = '用户管理';
// 列表显示字段
protected $listFields = [
'id' => 'ID',
'username' => '用户名',
'email' => '邮箱',
'status' => '状态',
'created_at' => '创建时间'
];
// 表单字段
protected $formFields = [
'username' => ['label' => '用户名', 'type' => 'text', 'require' => true],
'email' => ['label' => '邮箱', 'type' => 'email'],
'password' => ['label' => '密码', 'type' => 'password'],
'status' => ['label' => '状态', 'type' => 'select', 'options' => [1 => '启用', 0 => '禁用']]
];
// 搜索字段
protected $searchFields = ['username' => '用户名', 'email' => '邮箱'];
}
路由配置
// config/routes.php
use Hyperf\HttpServer\Router\Router;
Router::addGroup('/admin', function () {
Router::addRoute(['GET', 'POST'], '/user/index', 'App\Controller\Admin\UserController@index');
Router::addRoute(['GET', 'POST'], '/user/create', 'App\Controller\Admin\UserController@create');
Router::addRoute(['GET', 'POST'], '/user/edit/{id}', 'App\Controller\Admin\UserController@edit');
Router::addRoute(['POST'], '/user/delete', 'App\Controller\Admin\UserController@delete');
});
使用示例
列表页面
public function index(Request $request)
{
$params = $request->all();
$list = $this->model->paginate($params['page'] ?? 1, $params['limit'] ?? 15);
return $this->view('admin::user.index', [
'list' => $list,
'fields' => $this->listFields,
'search' => $this->searchFields
]);
}
创建数据
public function create(Request $request)
{
if ($request->isMethod('POST')) {
$data = $request->all();
// 验证数据
$validator = $this->validationFactory->make($data, [
'username' => 'required',
'email' => 'required|email',
'password' => 'required|min:6'
]);
if ($validator->fails()) {
return $this->error('验证失败:' . $validator->errors()->first());
}
// 密码加密
$data['password'] = password_hash($data['password'], PASSWORD_DEFAULT);
// 创建用户
$user = User::create($data);
return $this->success('创建成功', ['id' => $user->id]);
}
return $this->view('admin::user.create', [
'fields' => $this->formFields
]);
}
编辑数据
public function edit(Request $request, $id)
{
$user = User::find($id);
if (!$user) {
return $this->error('用户不存在');
}
if ($request->isMethod('POST')) {
$data = $request->all();
// 更新数据
$user->update($data);
return $this->success('更新成功');
}
return $this->view('admin::user.edit', [
'user' => $user,
'fields' => $this->formFields
]);
}
删除数据
public function delete(Request $request)
{
$ids = $request->input('ids', []);
if (empty($ids)) {
return $this->error('请选择要删除的数据');
}
User::whereIn('id', $ids)->delete();
return $this->success('删除成功');
}
自定义模型
<?php
namespace App\Model;
use Hyperf\Database\Model\Model;
class User extends Model
{
// 表名
protected $table = 'users';
// 可填充字段
protected $fillable = ['username', 'email', 'password', 'status'];
// 隐藏字段
protected $hidden = ['password'];
// 类型转换
protected $casts = [
'status' => 'integer'
];
// 关联
public function orders()
{
return $this->hasMany(Order::class, 'user_id', 'id');
}
}
权限管理
中间件配置
// app/Middleware/AdminAuthMiddleware.php
class AdminAuthMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$token = $request->getHeaderLine('Authorization');
if (!$this->checkToken($token)) {
return new JsonResponse(['code' => 401, 'message' => '未登录']);
}
return $handler->handle($request);
}
private function checkToken($token)
{
// 验证 token 逻辑
return true;
}
}
其他特性
多语言支持
// config/autoload/translation.php
return [
'locale' => 'zh_CN',
'fallback_locale' => 'en',
];
队列任务
use Hyperf\AsyncQueue\Annotation\AsyncQueueMessage;
class SendMailJob
{
#[AsyncQueueMessage]
public function send($email, $content)
{
// 发送邮件逻辑
}
}
缓存
use Hyperf\Cache\Annotation\Cacheable;
class UserService
{
#[Cacheable(prefix: "user", ttl: 3600)]
public function getUser(int $id)
{
return User::find($id);
}
}
启动服务
# 开发模式 php bin/hyperf.php start # 生产模式(守护进程) php bin/hyperf.php start -d
注意事项
- 性能优化:Hyperf 是常驻内存框架,修改代码后需要重启服务
- 错误处理:需要使用协程安全的异常处理机制
- 数据库连接:使用连接池管理数据库连接
- 日志记录:使用 monolog 进行日志记录
- 缓存策略:合理使用缓存提高性能
完整项目结构
project/
├── app/
│ ├── Controller/
│ │ └── Admin/
│ ├── Model/
│ ├── Middleware/
│ └── Service/
├── config/
│ ├── autoload/
│ └── routes.php
├── storage/
│ └── uploads/
├── view/
│ └── admin/
├── composer.json
└── .env
这就是 Hyperf Admin 的基本使用方法,它是一个高性能的后台管理系统,适合需要高并发的场景,建议先熟悉 Hyperf 框架的基本概念再使用 Admin 会更容易上手。