PHP 怎么PHP Hyperf Admin

wen PHP项目 1

本文目录导读:

PHP 怎么PHP Hyperf Admin

  1. Hyperf Admin 概述
  2. 安装步骤
  3. 基本配置
  4. 创建控制器
  5. 路由配置
  6. 使用示例
  7. 自定义模型
  8. 权限管理
  9. 其他特性
  10. 启动服务
  11. 注意事项
  12. 完整项目结构

我来详细介绍 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

注意事项

  1. 性能优化:Hyperf 是常驻内存框架,修改代码后需要重启服务
  2. 错误处理:需要使用协程安全的异常处理机制
  3. 数据库连接:使用连接池管理数据库连接
  4. 日志记录:使用 monolog 进行日志记录
  5. 缓存策略:合理使用缓存提高性能

完整项目结构

project/
├── app/
│   ├── Controller/
│   │   └── Admin/
│   ├── Model/
│   ├── Middleware/
│   └── Service/
├── config/
│   ├── autoload/
│   └── routes.php
├── storage/
│   └── uploads/
├── view/
│   └── admin/
├── composer.json
└── .env

这就是 Hyperf Admin 的基本使用方法,它是一个高性能的后台管理系统,适合需要高并发的场景,建议先熟悉 Hyperf 框架的基本概念再使用 Admin 会更容易上手。

抱歉,评论功能暂时关闭!