ludonkey / tinymvc
轻量级的MVC实现
dev-master
2020-07-01 13:29 UTC
Requires
- php: >=7.4.0
- symfony/yaml: ^5.0
This package is auto-updated.
Last update: 2024-09-29 06:08:30 UTC
README
描述
这是一个轻量级的 MVC 实现,使用 PHP。
我创建这个是为了我的学生,在开始使用 Symfony 之前学习MVC的第一步。
安装
composer require ludonkey/tinymvc:@dev
演示
在线: https://sharecode-tinymvc.herokuapp.com/
源代码: https://github.com/ludonkey/php-project-ludonkey/tree/v10
在线: https://miniproject-template.herokuapp.com/
源代码: https://github.com/ludonkey/miniproject-template
入门指南
您的前端控制器应该是这样的 public/index.php
<?php use ludk\Http\Kernel; use ludk\Http\Request; require '../vendor/autoload.php'; $kernel = new Kernel(); $request = new Request($_GET, $_POST, $_SERVER, $_COOKIE); $response = $kernel->handle($request); $response->send();
路由
默认情况下,Kernel 将尝试从 config/routes.yaml 加载路由,但您可以在创建 Kernel 对象时设置另一个文件。其角色是将 Request 重定向到正确的 Controller 和该控制器正确的 方法。
示例
homepage: path: / controller: Controller\HomeController:display search: path: /search controller: Controller\HomeController:search remove: path: /remove controller: Controller\HomeController:remove create: path: /create controller: Controller\HomeController:create update: path: /update controller: Controller\HomeController:update
控制器
您的控制器必须扩展 AbstractController。方法以 Request 作为参数,并必须 返回一个Response。
<?php namespace Controller; use Entity\Card; use ludk\Http\Request; use ludk\Http\Response; use ludk\Controller\AbstractController; class HomeController extends AbstractController { public function display(Request $request): Response { $cardRepository = $this->getOrm()->getRepository(Card::class); $cards = $cardRepository->findAll(); $data = array( "myText" => "Hello everybody !", "cards" => $cards ); return $this->render('home/main.php', $data); }
模型
为了简化,这里没有数据库,所有数据都来自 json 文件。它们被 加载到用户会话中,因此您可以添加数据、删除、更新,但它们将在新的会话开始时恢复为原始数据。
待办...