mpie22 / core
一个支持 openswoole、workerman 和 FPM 环境的组件化轻量级 PHP 框架。
dev-main
2022-10-05 18:08 UTC
Requires
- php: ^8.0
- ext-json: *
- ext-mbstring: *
- ext-openswoole: >=4.8
- ext-pcntl: *
- ext-pdo: *
- ext-redis: *
- doctrine/inflector: ^2.0
- hyperf/exception-handler: ^2.2
- hyperf/http-message: ^2.2
- league/commonmark: ^2.3
- nikic/php-parser: ^4.13
- psr/container: ^1.0|^2.0
- psr/event-dispatcher: ^1.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.0
- psr/simple-cache: ^1.0
- ramsey/uuid: ^4.5
- symfony/finder: *
- symfony/mime: ^6.1
- symfony/var-dumper: *
- voku/portable-ascii: ^2.0
Requires (Dev)
- amphp/http-server: ^2.1
- friendsofphp/php-cs-fixer: ^3.8
- guzzlehttp/guzzle: ^7.5
- openswoole/ide-helper: ~4.11.0
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^9.5
- workerman/workerman: ^4.1
This package is auto-updated.
Last update: 2024-09-05 22:24:27 UTC
README
Mpie 框架入门
轻量级 • 简单 • 快速
一个支持 swoole、workerman 和 FPM 环境的组件化轻量级 PHP
框架。适用于 API
开发,方便快捷。框架默认安装了 session
和 view
扩展,如不需要可以直接移除。
环境要求
- 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'); }); });