ludonkey/tinymvc

轻量级的MVC实现

dev-master 2020-07-01 13:29 UTC

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 文件。它们被 加载到用户会话中,因此您可以添加数据、删除、更新,但它们将在新的会话开始时恢复为原始数据。

待办...