(3)抽象入口与核心Core文件

发布于:2022-08-24 18:06:19

一、抽象入口文件(index.php)

<?php

include_once '../core/core.php';


(new core())->start();

二、抽象核心(core.php)

<?

class core
{
    // public function __construct()
    // {
    // }

    public function start()
    {
        $app = $this->getApp();
        $this->callFunction($app);
    }
    /**
     * 生成用户应用实例
     */
    public function getApp()
    {
        $c = isset($_GET['c']) ? $_GET['c'] : 'app'; //控制器
        $appFile = '../app/' . $c . '.php'; //此处可以看到控制器名与文件名需要同名
        if (!file_exists($appFile)) {
            throw new Exception("用户APP不存在:" . $c);
        }
        include $appFile;
        return new $c();
    }

    /**
     * 获取用户应用方法
     */
    public function callFunction($app)
    {
        $f = isset($_GET['f']) ? $_GET['f'] : 'index'; //方法
        if (!method_exists($app, $f)) {
            throw new Exception("用户方法不存在:" . $f);
        }
        return $app->$f();
    }
}

三、引用控制器和视图

1、控制器app.php

<?php

class app
{
    public function index()
    {
        $name = "世界";
        include dirname(__DIR__) . './view/' . __CLASS__ . '/' . __FUNCTION__ . '.php';
    }
}

2、视图view.php

<html>

<head></head>

<body>
    <h2>你好<?php echo $name; ?></h2>
</body>

</html>

四、目录结构如下

附件:点击下载
阅读 432