zoukankan      html  css  js  c++  java
  • A框架 第三步 先加载父类,如果加载子类.立马报错.里面继承的父类还没有导入

    先导入  超级父类 如object.php ----controller.php 框架文件中

    后导入  当前请求的controller的抽象父类(controller_abstract)

    最后  导入当前controller

    http://www.acms.com/admin/?app=system&controller=admin&action=login

    先进入admin目录,后面的参数忽略掉

    如果admin目录下有index.php文件就执行.否则执行index.html文件 ,(服务器配置好,默认文件)

    url参数在index.php-->主程序cmstop.php->router.php中再接收

    核心core中的router路由类--负责接收所有url发送的get请求.
    交给主程序cmstop--拼接引入当前请求的父类, 在引入当前请求控制器文件--并(拼接类名)实例化
    $this->controller = $_GET['controller'];
    $this->args = $_GET;


    主程序cmstop中 一旦require_once($file)导入一个控制器.并且该控制器中有继承extends controller_abstract
    必定触发loader中的自动加载方法,需要手动写(__autoload())-->自动加载extends后面的父类controller_abstract
    function __autoload($class)
    {
    return loader::load($class);
    }

    自动加载除了加载cache_storge类.
    其他控制器.只是触发了__autoload方法.对方接收到了controller_abstract抽象父类名称.实际没有加载成功(没有通过这里加载)
    当前请求的控制器. 按照新格式.已经实现了自动导入
    public function set_controller($controller)
    {
    if ($this->client === 'admin')
    {
    $this->class = 'controller_admin_'.$controller;
    $file = $this->app_dir.'controller'.DS.'admin'.DS.$controller.'.php';//如果是后台进入,放置admin目录下(入口时.实例
    化cmstop并传递admin参数,用来确定访问入口)
    }
    else
    {
    $this->class = 'controller_'.$controller;
    $file = $this->app_dir.'controller'.DS.$controller.'.php';
    }

    if (!file_exists($file)) $this->showmessage("$controller 控制器不存在");

    if (!class_exists('controller_abstract'))
    {
    require_once($this->app_dir.'controller'.DS.'abstract.php');//A 先导入父类抽象类
    }

    require_once($file);////B再导入当前请求控制器

    $this->controller = $controller;
    }

    01先设置好运行的模块.同时保留这个模块的路径.给导入控制器使用
    public function set_app($app)
    {
    $this->app_dir = CMSTOP_PATH.'apps'.DS.$app.DS;//设置好当前请求模块路径.
    $this->app = $app;
    loader::set_app($this->app);
    }


    admin后台入口文件index.php-->(导入cmstop实例化传递admin)

    到主程序cmstop.php-->引入framwork.php框架文件

    -->已经导入所有父类(核心类core中的)-->

    object.php 
    controller.php.model.php.view.php以及子类template.php

    -->其他控制器和抽象类.都是在cmstop接收到请求后.才导入

  • 相关阅读:
    20200416_Centos 7.2 在安装系统之前把数据备份出来
    20200322_【转载】关于C#中使用SQLite自适应Any CPU程序的说明
    20200315_python3.6去除标点符号
    性能测试,负载测试,压力测试有什么区别
    app安全测试(转载)
    postman的使用
    安全测试
    MySQL SELECT陈述式范例
    软件测试环境
    性能测试报告
  • 原文地址:https://www.cnblogs.com/bj-tony/p/5310851.html
Copyright © 2011-2022 走看看