mpie22/core

一个支持 openswoole、workerman 和 FPM 环境的组件化轻量级 PHP 框架。

dev-main 2022-10-05 18:08 UTC

This package is auto-updated.

Last update: 2024-09-05 22:24:27 UTC


README

Mpie 框架入门

轻量级 • 简单 • 快速

一个支持 swoole、workerman 和 FPM 环境的组件化轻量级 PHP 框架。适用于 API 开发,方便快捷。框架默认安装了 sessionview 扩展,如不需要可以直接移除。

环境要求

- PHP >= 8.0
- ext-ctype
- ext-dom
- ext-filter
- ext-json
- ext-libxml
- ext-mbstring
- ext-openssl
- ext-openswoole
- ext-pcntl
- ext-pdo
- ext-phar
- ext-redis
- ext-tokenizer
- ext-xml
- ext-xmlwriter

如果使用 openswoole,请确保安装版本 4.8 或以上;如果使用 workerman,请确保使用版本 4.0 或以上。

使用

安装

composer create-project mpie22/framework:dev-main

启动服务

swoole 服务

php bin/openswoole.php // asynchronous mode
php bin/openswoole-co.php // coroutine mode

workerman 服务

php bin/workerman.php start

内置服务

php bin/cli-server.php

FPM 模式,将请求直接指向 public/index.php

区别

使用 swoole/workerman 支持注解、AOP 等特性,FPM 模式可以直接卸载 AOP 包。

入门指南

路由定义

在 swoole/swooleco/workerman 下可以使用注解定义

<?php

namespace App\Controllers;

use App\Http\Response;
use Mpie\Routing\Annotation\Controller;
use Mpie\Routing\Annotation\GetMapping;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

#[Controller(prefix: '/')]
class IndexController
{
    #[GetMapping(path: '/')]
    public function index(ServerRequestInterface $request): ResponseInterface
    {
        return Response::HTML('Hello, ' . $request->query('name', 'MpiePHP!'));
    }
}

上述请求 0.0.0.0:8080 将指向 index 方法,控制器方法支持依赖注入。如果需要当前请求的示例,请求参数名称必须是 request,其他路由参数将被注入,控制器方法需要返回 ResponseInterface 实例。

FPM 或内置服务下不能使用注解

路由定义在 App\Http\Kernel 类的 map 方法中定义

$router->middleware(TestMiddleware::class)->group(function(Router $router) {
    $router->get('/', [IndexController::class, 'index']);
    $router->get('/test', function(\Psr\Http\Message\ServerRequestInterface $request) {
        return \App\Http\Response::HTML('new');
    });
});

更多

感谢