ketyl/vine

此包已废弃,不再维护。未建议替代包。

简单的PHP框架。

dev-main 2021-12-01 05:07 UTC

This package is auto-updated.

Last update: 2023-05-13 05:57:40 UTC


README

Tests

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();