ride/lib-mvc

Ride 框架的 MVC 库

1.3.0 2024-06-26 08:57 UTC

This package is auto-updated.

Last update: 2024-08-26 09:35:16 UTC


README

PHP Ride 框架的 Model-View-Controller 库。

它基于 HTTP 和路由库来处理输入和输出。

本库包含的内容

请求

MVC 请求 是一个扩展的 HTTP 请求。它集成了路由,可以从中获取额外的属性,如基本 URL 和传入参数。

响应

MVC 响应 是一个扩展的 HTTP 响应。它添加了处理视图和消息的方法。

控制器

控制器 处理传入的请求并将其转换为响应。控制器的核心是操作。可以在一个控制器中定义多个操作。每个操作将输入传递给模型以执行必要的逻辑。此操作的结果设置为响应,可能通过视图进行。

要将传入请求转换为操作,必须在路由表中定义操作。

模型

模型包含您的域逻辑。由于它可以是你想要的任何东西,因此没有接口。这完全取决于你。

视图

视图 是结果的表示。它是一个变量数据容器,将在发送响应时渲染。可以轻松实现相同操作的多个视图,如 HTML、JSON、XML 等。

消息

消息 是单个消息的数据容器。可以将多个消息添加到响应中。在提交表单时,用于添加警告、错误和成功消息非常有用。

代码示例

查看此代码示例以了解此库的一些可能性

<?php

use ride\library\http\Header;
use ride\library\http\HttpFactory;
use ride\library\http\Response;
use ride\library\mvc\dispatcher\GenericDispatcher;
use ride\library\mvc\message\Message;
use ride\library\router\GenericRouter;
use ride\library\router\RouteContainer;
use ride\library\router\Route;

// prepare some routes
$route = new Route('/', 'testAction');
$route->setIsDynamic(true);

$routeContainer = new RouteContainer();
$routeContainer->setRoute($route);

// get the request and response
$httpFactory = new HttpFactory();
$httpFactory->setRequestClass('ride\\library\\mvc\\Request');
$httpFactory->setResponseClass('ride\\library\\mvc\\Response');

$request = $httpFactory->createRequestFromServer();
$response = $httpFactory->createResponse();

// route the request
$router = new GenericRouter($routeContainer);
$routerResult = $router->route($request->getMethod(), $request->getBasePath(), $request->getBaseUrl());

// dispatch the route
$returnValue = null;

if ($routerResult->isEmpty()) {
    $response->setStatusCode(Response::STATUS_CODE_NOT_FOUND);
} else {
    $route = $routerResult->getRoute();
    if ($route) {
        $request->setRoute($route);

        $dispatcher = new GenericDispatcher();
        $dispatcher->dispatch($request, $response);
    } else {
        $allowedMethods = $routerResult->getAllowedMethods();

        $response->setStatusCode(Response::STATUS_CODE_METHOD_NOT_ALLOWED);
        $response->addHeader(Header::HEADER_ALLOW, implode(', ', $allowedMethods));
    }
}

// send the response
$response->send($request);

// the test action
function testAction() {
    global $response;

    $response->addMessage(new Message('This is a test action', Message::TYPE_WARNING));
    $response->setBody('test: ' . var_export(func_get_args(), true));
}

实现

要查看更多示例,您可以检查以下库实现

安装

您可以使用 Composer 来安装此库。

composer require ride/lib-mvc