PHP自己的框架2.0加载控制器并运行(重构篇四)

23 篇文章 2 订阅
7 篇文章 0 订阅

目录

 1、加载控制器并运行

 2、创建admin和index模块控制器

3、自动加载控制器文件

4、运行控制器中方法

5、运行模块下控制器方法


 

 1、加载控制器并运行

 2、创建admin和index模块控制器
<?php
namespace app\admin\controller;
class index{
    public function index(){
        echo "运行admin模块";
    }
}
<?php
namespace app\index\controller;
class index{
    public function index(){
      echo "运行index模块";
    }
}
3、自动加载控制器文件
<?php
namespace fm;
class autoload{
    public static  function register(){
        spl_autoload_register(array(__CLASS__,'_autoload'),true, true);
    }
    public static function _autoload($className){
        $path=dirname(dirname(str_replace('\\','//',__FILE__)));
        if (!(strpos($className, 'fm') === 0)) {
            //加载根目录类
            $path=dirname($path);
        }
        $file=$path.'/'.$className.'.php';
        if(is_file($file)){
            include $file;
        }

    }

}
4、运行控制器中方法
<?php
namespace fm;
class core extends Di{
    protected $corePath;//核心目录路径
    protected $rootPath;//项目根目录
    public function __construct()
    {

    }
    public  function run(){
        $this->_int();//初始化常量
        $this->_run();//运行
    }

    //运行控制器中方法
    public static function _run(){
        $m=strtolower(isset($_GET['m'])?$_GET['m']:'index');
        $c=strtolower(isset($_GET['c'])?$_GET['c']:'index');
        $a=strtolower(isset($_GET['a'])?$_GET['a']:'index');
        $c="app\\".$m."\\controller\\".$c;
       if(!class_exists($c)){
            die("控制器".$c."不存在");
        }
        $obj=new $c();

        if(!method_exists($obj,$a)){
            die("控制器".$c."下".$a."方法不存在");
        }
        $obj->$a();
    }

     public function _int(){

         //获取框架核心路径 都替换/以便兼容linux
         $path=str_replace("\\","/",__FILE__);
         //定义常量
         $this->corePath=dirname(dirname($path));
         $this->rootPath=dirname($this->corePath);
         static::setInstance($this);
         $this->bandInstance('core', $this);

     }

}
5、运行模块下控制器方法

localhost/frame/public/index.php?m=admin&c=index&a=index

localhost/frame/public/index.php?m=index&c=index&a=index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHP隔壁老王邻居

啦啦啦啦啦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>