ketyl / vine
此包已废弃,不再维护。未建议替代包。
简单的PHP框架。
dev-main
2021-12-01 05:07 UTC
Requires
- php: ^8.0|^8.1
- psr/container: ^2.0
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^5.3
This package is auto-updated.
Last update: 2023-05-13 05:57:40 UTC
README
Vine是一个简单的PHP 8微框架,从头编写。这更多的是我的学习经验,并不打算用于生产环境,将来也不会。
受Laravel和Slim等流行PHP框架的启发,Vine专注于开发者体验。其API设计简洁、直观、一致,尽可能减少使用“魔法”。
功能
- 灵活的路由引擎
- 服务容器
- 基本视图支持
- 基本中间件支持
- 多种返回类型
路线图
- 依赖注入
- 基本模板引擎
- 遵守PSR标准(路由、中间件等)
安装
Vine的安装与其他composer包类似。首先,将包作为依赖项包含
composer require ketyl/vine
安装完成后,您可以创建一个Ketyl\Vine\App
实例,添加您的路由,并运行应用程序
// Create a new application instance $app = new App(); $router = $app->router(); // Add global middleware $router->addMiddleware(function (Request $request, Response $response, $next) { $response->write('BEFORE'); $response = $next($request, $response); $response->write('AFTER'); return $response; }); // Anonymous function $router->get('/', fn () => 'Hello, world!'); // Adding route-specific middleware $router->get('/', fn () => 'Hello, world!') ->addMiddleware(function (Request $request, Response $response, $next) { $response->write('BEFORE'); $response = $next($request, $response); $response->write('AFTER'); return $response; }); // Class-based route using a method $router->get('/posts', [PostController::class, 'index']); // Class-based route using __invoke $router->get('/download', DownloadController::class); // Route parameters $router->get('/param/{foo}', fn ($foo) => $foo); // Route parameters with RegEx restriction $router->get('/regex-a/{foo:\d+}', fn ($foo) => $foo); // Basic RegEx restriction $router->get('/regex-b/\d+', fn ($foo) => $foo); // Return a view $router->get('/view', fn () => view(__DIR__ . '/../views/index.html')); // Attempt to match the request's URI with the registered routes $app->run();