• ThinkPHP框架 _ 学习8


      

    【跨控制器调用】

    一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法。

    跨控制器调用可以节省我们代码的工作量,不然的话,同一个函数就要不同的控制器里面重新写一遍 ,这是件多么麻烦的事情

    例如:10个页面,都要现实指定的数据信息显示。比如我们网站的“会员数目有200万”,这个信息需要在10个页面都显示

    这个数据是通过UserController.class.php 里边额方法number()给查询出来的

    现在商品列表页面也需要显示200万会员数目信息,那么原则上就是GoodsController.class.php里边也有一个方法number()专门获得会员数目的

    如果许多页面都需要显示200万的会员数据,则许多控制器都需要有number()方法。

    如果大家都能实例化User控制器,并调用它的number()方法,则会节省许多重复劳动。

     

    *  先在控制器里面创建一个需要调用的控制器的对象,然后用该对象来调用函数的方法

    也可以利用tp框架封装的一些函数的,来跨控制器的调用,这样比较方便快捷

    详情请看下面的   封装函数的介绍   A(),  R()。

     

    系统函数库:ThinkPHP/Common/functions.php

     

    A(“[模块/]控制器标志”) 实例化控制器对象

    R([模块/]控制器标志/操作方法)  实例化对象同时调用指定方法

    【框架执行流程分析】

    tp框架内部代码集成:面向过程和OOP面向对象

    1. index.php  入口文件

    2. ThinkPHP/ThinkPHP.php

        php5.3版本以后

        设置常量有两种方式:

        const name = value;  作用域根据当前命名空间决定

        define()  作用域全局

        ① 定义了许多常量

        ② 引入核心文件Think.class.php

        Think::start();

    3. ThinkPHP/Library/Think/Think.class.php

        static function start()

        ① 引入系统核心文件

        ② 引入配置文件

        ③ 如果是生成模式,还会生成common~runtime.php文件

        ④ 如果是第一次使用系统,还会自动创建对应的应用目录(Home  ,Common,  Runtime)

        App::run();

    4. ThinkPHP/library/Think/App.class.php

        static function run()

          App::init();

            路由解析

            //路由解析,把模块、控制器、方法赋予常量

            //MODULE_NAME = 模块名称

            //CONTROLLER_NAME  控制器

            //ACTION_NAME  方法

          App::exec()

            实例化控制器对象

            利用“反射”实现对象调用方法

    利用反射实现对象调用方法:

  • 相关阅读:
    改变windows下installer文件夹位置,目录链接(不是快捷方式)
    SQL2008根据日志恢复
    HTML5实践
    人类的本能——自私与善
    打油诗 看《大上海》
    POSA2:Wrapper Facade模式
    解析XML文件
    MediaWiki编辑工具
    每周一荐:设计模式
    每周一荐:分布式计算的模式语言
  • 原文地址:https://www.cnblogs.com/zhengweizhao/p/6703920.html
Copyright © 2020-2023  润新知