127.自己开发一个 PHP 框架

框架运行流程
这里写图片描述


1.入口文件

<?php

/**
 * 入口文件
 * 1.定义常量
 * 2.加载函数库
 * 3.启动框架
 */

define('IMOOC',realpath('./'));
define('CORE',IMOOC.'/core');
define('APP',IMOOC.'/app');

define('DEBUG',true);

if (DEBUG) {
    ini_set('display_error','On');
} else {
    ini_set('display_error','Off');
}

require IMOOC . '/' . 'core/imooc.php';

spl_autoload_register('\\core\\imooc::load');

\core\imooc::run();

2.自动加载类

<?php

namespace core;

class imooc
{
    public static function run()
    {
        $route = new \core\lib\route();
        var_dump($route);
    }

    public static function load($class)
    {
        //自动加载类
        require IMOOC . '/' . $class . '.php';
    }
}

3.路由类

<?php

namespace core\lib;

class route
{

    private $ctrl = 'index';
    private $action = 'index';

    /**
     * route constructor.
     */
    public function __construct()
    {
        // 正常网址 xxx.com/index/index
        //        xxx.com/index.php/index/index
        /**
         *
         *  1.隐藏 index.php
         *  2.获取 url 参数部分
         *  3.返回对应的控制器和方法
         */

        if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/') {
            // /index/index
            $path = $_SERVER['REQUEST_URI'];
            $patharr = explode('/',trim($path,'/'));

            if (isset($patharr[0])) {
                $this->ctrl = $patharr[0];
            } else {
                $this->ctrl = 'index';
            }

            unset($patharr[0]);

            if (isset($patharr[1])) {
                $this->action = $patharr[1];
            } else {
                $this->action = 'index';
            }

            unset($patharr[1]);

            // url 多于部分转换为参数
            // index/index/id/1/test/3
            $count = count($patharr);
            var_dump($count);
            $i = 2;
            while ($i <= $count) {
                //防止数组越界
                if (!isset($patharr[$i + 1])) {
                    break;
                }
                $_GET[$patharr[$i]] = $patharr[$i + 1];
                $i = $i + 2;
            }
            var_dump($_GET);

        } else {
            $this->ctrl = 'index';
            $this->action = 'index';
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值