从零开始打造自己的php框架

为什么要开发自己的框架?

  1. 为了更快的开发效率
  2. 为了更高的运行效率
  3. 为了更好地证明自己(装x)

你需要什么?

  1. 能够熟练地使用使用php
  2. 较为深刻的理解面向对象和mvc概念
  3. 较强的逻辑能力和动手能力

我的项目 github地址

https://github.com/cjk134796/cjk_imooc

2-3 路由类

目的: 通过地址栏的参数来找到对应的控制器和方法
本质

  1. 隐藏index.php
  2. 获取uRL 参数部分
  3. 返回对应的控制器和方法
  4. url多余部分转换成 GET ;例如 /id/1/str/2/test/3
<?php
namespace core\lib;
use core\lib\conf;

class route{
   
    public $ctrl;
    public $action;
    public function __construct()
    {
   
        /**
         * 1.隐藏index.php
         * 2.获取uRL 参数部分
         * 3.返回对应的控制器和方法
         */
        if(isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '/'){
   
            $path = $_SERVER['REQUEST_URI'];
            $patharr = explode('/',trim($path,'/'));
            if(isset($patharr[0])){
   
                $this->ctrl = $patharr[0];
            }
            unset($patharr[0]);
            if(isset($patharr[1])){
   
                $this->action = $patharr[1];
                unset($patharr[1]);
            }else{
   
                $this->action = conf::get('ACTION','route'); //更换成配置项
            }

            //url多余部分转换成  GET
            $_GET = [];
            $count = count($patharr) + 2;
            $i = 2;
            while ($i < $count){
   
                if(isset($patharr[$i + 1])){
   
                    $_GET[$patharr[$i]] = $patharr[$i + 1];
                }
                $i = $i + 2;
            }
        }else{
   
            $this->ctrl = conf::get('CTRL','route');
            $this->action = conf::get('ACTION','route');
        }
    }
}

2-4 加载控制器

目的:mvc结构的v,解耦,实现业务逻辑
本质

  1. 通过路由类获取控制器和方法名
  2. 如果存在文件 则 实例化对应类和使用对应方法,反之
<?php
namespace app\ctrl;
use core\lib\conf;

class indexCtrl extends \core\imooc
{
   
    public function index()
    {
   
        $temp 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值