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

news2024/11/16 17:28:08

目录

 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【pytest】生成测试报告

0. 脚本&#xff1a; fixture/test_fixtures_02.py # 功能函数 import pytestdef multiply(a, b):return a * bclass TestMultiply:# fixturesclassmethoddef setup_class(cls):print("setup_class>")classmethoddef teardown_class(cls):print("teardown_c…

在PHP8中对数组进行计算-PHP8知识详解

在php8中&#xff0c;提供了丰富的计算函数&#xff0c;可以对数组进行计算操作。常见的计算函数如下几个&#xff1a;array_sum()函数、array_merge()函数、array_diff()函数、array_diff_assoc()函数、array_intersect()函数、array_intersect_assoc()函数。 1、array_sum()函…

MySQL数据库——MySQL8.0.26-Linux版安装

目录 准备Linux服务器 下载安装包 上传安装包 创建目录,并解压 安装mysql的安装包 启动MySQL服务 查询自动生成的root用户密码 修改root用户密码 创建用户 并给root用户分配权限 通过DataGrip远程连接MySQL 准备Linux服务器 云服务器或者虚拟机&#xff0c; Linux…

P2P协议的传输艺术

TP 采用两个 TCP 连接来传输一个文件。 控制连接&#xff1a;服务器以被动的方式&#xff0c;打开众所周知用于 FTP 的端口 21&#xff0c;客户端则主动发起连接。该连接将命令从客户端传给服务器&#xff0c;并传回服务器的应答。常用的命令有&#xff1a;list——获取文件目…

图解曲面积分的对称性

1.图解曲面积分的对称性 1.1 第一类曲面积分的一般对称性 二重积分、三重积分、第一类曲线积分、第一类曲面积分的一般对称性其原理都类似 平面和空间曲面的原理一样&#xff0c;以下内容以空间曲面为例 图中所示为积分区域 Σ \Sigma Σ&#xff0c;函数 f ( x , y , z ) f(…

PostgreSQL缓存管理

缓冲区管理器、存储和后端进程之间的关系 缓存管理结构 PostgreSQL 缓冲区管理器由buffer table、buffer descriptors和buffer pool组成。buffer pool层存储表和索引等数据文件页&#xff0c;以及空闲空间映射和可见性映射。buffer pool是一个数组&#xff0c;每个槽存储数据文…

Redis RedLock算法和底层源码分析

Redlock红锁算法 官网地址&#xff1a;Distributed Locks with Redis | Redis 为什么要使用RedLock&#xff1f; 解释&#xff1a; 线程 1 首先获取锁成功&#xff0c;将键值对写入 redis 的 master 节点&#xff0c;在 redis 将该键值对同步到 slave 节点之前&#xff0c;mas…

vue+express、gitee pm2部署轻量服务器

一、代码配置 前后端接口都保持 127.0.0.1:3000 vue创建文件 pm2.config.cjs module.exports {apps: [{name: xin-web, // 应用程序的名称script: npm, // 启动脚本args: run dev, // 启动脚本的参数cwd: /home/vue/xin_web, // Vite 项目的根目录interpreter: none, // 告诉…

java基础-并发编程-CountDownLatch(JDK1.8)源码学习

CountDownLatch方法调用与类关系图 一、初始化&#xff1a;public CountDownLatch(int count) public CountDownLatch(int count) {if (count < 0) throw new IllegalArgumentException("count < 0");this.sync new Sync(count);}Sync(int count) {// 将参数…

pte初步认识学习

我们的时间的确很少&#xff0c;但是我们每天都乐意将珍贵的时间浪费在大量毫无意义的事情上 目录 pte介绍 PTE口语评分规则 pte架构 计算机科学23 QS排名 《芭比》 pte介绍 PTE口语评分规则 有抑扬顿挫 对于连读 不能回读 native pte对于个别单词没有读好&#xff0c…

JSP 学习笔记(基础)

出现背景&#xff1a; 由于 Servlet 输出 HTML 比较困难&#xff0c;所以出现了 JSP 这个代替品。 特点&#xff1a; 基于文本&#xff0c;HTML 和 Java 代码共同存在&#xff08;用 write() 来写 HTML 标签&#xff09;其本身就是个被封装后的 Servlet&#xff08;被编译为…

JavaScript的BOM操作

一、BOM 1.认识BOM BOM&#xff1a;浏览器对象模型&#xff08;Browser Object Model&#xff09; 简称 BOM&#xff0c;由浏览器提供的用于处理文档&#xff08;document&#xff09;之外的所有内容的其他对象&#xff1b;比如navigator、location、history等对象&#xff…

Android 使用Camera1实现相机预览、拍照、录像

1. 前言 本文介绍如何从零开始&#xff0c;在Android中实现Camera1的接入&#xff0c;并在文末提供Camera1Manager工具类&#xff0c;可以用于快速接入Camera1。 Android Camera1 API虽然已经被Google废弃&#xff0c;但有些场景下不得不使用。 并且Camera1返回的帧数据是NV21…

JSP ssm 零配件管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm 零配件管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用…

ThinkPHP 5.0通过composer升级到5.1,超级简单

事情是这样的&#xff0c;我实现一个验证码登录的功能&#xff0c;但是这个验证码的包提示tp5的版本可以是5.1.1、5.1.2、5.1.3。但我使用的是5.0&#xff0c;既然这样&#xff0c;那就升个级呗&#xff0c;百度了一下&#xff0c;结果发现大部分都是讲先备份application和修改…

python之pyQt5实例:PyQtGraph的应用

1、显示逻辑 "MainWindow": "这是主窗口&#xff0c;所有的其他组件都会被添加到这个窗口上。", "centralwidget": "这是主窗口的中心部件&#xff0c;它包含了其他的部件。","pushButton": "这是一个按钮&#xff0c…

算法刷题 week3

这里写目录标题 1.重建二叉树题目题解(递归) O(n) 2.二叉树的下一个节点题目题解(模拟) O(h) 3.用两个栈实现队列题目题解(栈&#xff0c;队列) O(n) 1.重建二叉树 题目 题解 (递归) O(n) 递归建立整棵二叉树&#xff1a;先递归创建左右子树&#xff0c;然后创建根节点&…

贪心算法的思路和典型例题

一、贪心算法的思想 贪心算法是一种求解问题时&#xff0c;总是做出在当前看来是最好的选择&#xff0c;不从整体最优上加以考虑的算法。 二.用贪心算法的解题策略 其基本思路是从问题的某一个初始解出发一步一步地进行&#xff0c;根据某个优化测度&#xff0c;每一步都要确保…

Idea 下载不了源码 cannot download source

一、打开Terminal (AltF12)&#xff0c;找到项目具体模块所在的文件夹&#xff0c;输入一下指令 mvn dependency:resolve -Dclassifiersources 如果你的idea 终端无法使用mvn指令&#xff0c;要配置你idea中的maven的环境变量&#xff1a; 1、找到maven在idea中的位置&#xf…

Linux备份策略:保证数据安全

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…