ride / lib-mvc
Ride 框架的 MVC 库
1.3.0
2024-06-26 08:57 UTC
Requires
- ride/lib-http: ^1.0.0
- ride/lib-reflection: ^1.0.0
- ride/lib-router: ^1.0.0
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