首页 > 代码库 > ThinkPHP框架 _ 学习8
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()
实例化控制器对象
利用“反射”实现对象调用方法
利用反射实现对象调用方法:
ThinkPHP框架 _ 学习8