ThinkPHP中的跨控制器调用与框架执行流程
一、跨控制器调用
UserControllerclassphp
<php
namespace Home/Controller
use Think/Controller
class UserController extends Controller{
public function show(){
//TODO
}
}
复制代码
IndexControllerclassphp(方法一)
复制代码
<php
namespace Home/Controller
use Think/Controller
class IndexController extends Controller{
public function count(){
//通过快捷函数来实例化一个控制器
//User为控制器名
$user = A('User');
$user-> show();
}
}
IndexControllerclassphp(方法二)
<php
namespace Home/Controller
use Think/Controller
class IndexController extends Controller{
public function count(){
//User为控制器名,show为其方法
R('User/show');
}
}
二、ThinkPHP执行流程
当一个客户端发起一个请求的时候先去访问应用入口文件
<php
// 应用入口文件
// 检测PHP环境
if(version_compare(PHP_VERSION,'530','<')) die('require PHP > 530 !');
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);
// 引入ThinkPHP入口文件
require '//ThinkPHP/ThinkPHPphp';
在应用入口文件中引入TinkPHP框架的入口文件,然后执行该文件中的代码。
在TinkPHPphp中做了一些初始化 *** 作,比如定义了大量的全局常量,运行环境检测等
ThinkPHPphp
<php
// 记录开始运行时间
$GLOBALS['_beginTime'] = microtime(TRUE);
// 记录内存初始使用
define('MEMORY_LIMIT_ON',function_exists('memory_get_usage'));
if(MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage();
// 版本信息
const THINK_VERSION = '323';
// URL 模式定义
const URL_COMMON = 0; //普通模式
const URL_PATHINFO = 1; //PATHINFO模式
const URL_REWRITE = 2; //REWRITE模式
const URL_COMPAT = 3; // 兼容模式
// 类文件后缀
const EXT = 'classphp';
// 系统常量定义
defined('THINK_PATH') or define('THINK_PATH', __DIR__'/');
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME'])'/');
defined('APP_STATUS') or define('APP_STATUS', ''); // 应用状态 加载对应的配置文件
defined('APP_DEBUG') or define('APP_DEBUG', false); // 是否调试模式
if(function_exists('saeAutoLoader')){// 自动识别SAE环境
defined('APP_MODE') or define('APP_MODE', 'sae');
defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'Sae');
}else{
defined('APP_MODE') or define('APP_MODE', 'common'); // 应用模式 默认为普通模式
defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'File'); // 存储类型 默认为File
}
defined('RUNTIME_PATH') or define('RUNTIME_PATH', APP_PATH'Runtime/'); // 系统运行时目录
defined('LIB_PATH') or define('LIB_PATH', realpath(THINK_PATH'Library')'/'); // 系统核心类库目录
defined('CORE_PATH') or define('CORE_PATH', LIB_PATH'Think/'); // Think类库目录
defined('BEHAVIOR_PATH')or define('BEHAVIOR_PATH', LIB_PATH'Behavior/'); // 行为类库目录
defined('MODE_PATH') or define('MODE_PATH', THINK_PATH'Mode/'); // 系统应用模式目录
defined('VENDOR_PATH') or define('VENDOR_PATH', LIB_PATH'Vendor/'); // 第三方类库目录
defined('COMMON_PATH') or define('COMMON_PATH', APP_PATH'Common/'); // 应用公共目录
defined('CONF_PATH') or define('CONF_PATH', COMMON_PATH'Conf/'); // 应用配置目录
defined('LANG_PATH') or define('LANG_PATH', COMMON_PATH'Lang/'); // 应用语言目录
defined('HTML_PATH') or define('HTML_PATH', APP_PATH'Html/'); // 应用静态目录
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH'Logs/'); // 应用日志目录
defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH'Temp/'); // 应用缓存目录
defined('DATA_PATH') or define('DATA_PATH', RUNTIME_PATH'Data/'); // 应用数据目录
defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH'Cache/'); // 应用模板缓存目录
defined('CONF_EXT') or define('CONF_EXT', 'php'); // 配置文件后缀
defined('CONF_PARSE') or define('CONF_PARSE', ''); // 配置文件解析方法
defined('ADDON_PATH') or define('ADDON_PATH', APP_PATH'Addon');
// 系统信息
if(version_compare(PHP_VERSION,'540','<')) {
ini_set('magic_quotes_runtime',0);
define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc() true : false);
}else{
define('MAGIC_QUOTES_GPC',false);
}
define('IS_CGI',(0 === strpos(PHP_SAPI,'cgi') || false !== strpos(PHP_SAPI,'fcgi')) 1 : 0 );
define('IS_WIN',strstr(PHP_OS, 'WIN') 1 : 0 );
define('IS_CLI',PHP_SAPI=='cli' 1 : 0);
if(!IS_CLI) {
// 当前文件名
if(!defined('_PHP_FILE_')) {
if(IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('php',$_SERVER['PHP_SELF']);
define('_PHP_FILE_', rtrim(str_replace($_SERVER['>
使用方法:
{$ThinkserverSERVER_ADDR} <!--当前服务器的ip-->
{$ThinkserverREMOTE_ADDR} <!--访问者外部的ip-->
{$ThinkserverSERVER_NAME} <!--localhost-->
{$Thinkconst__SELF__} <!--当前项目路径-->
{$ThinkconstAPP_NAME} <!--项目名称-->
<!--2、获得ThinkPHP内部定义的变量-->
{$Thinknow} <!--当前时间-->
{$Thinktemplate} <!--APP/Tpl/Admin/View/showhtml -->
{$Thinkversion} <!--tp版本号-->
{$ThinkLDELIM} <!---->
以上就是关于thinkphp 模板与控制器之间执行过程全部的内容,包括:thinkphp 模板与控制器之间执行过程、thinkphp多维数组中获取多个数值---列如下面的$result数组中药获取 person sex oojnb 并且在模板页面显示、thinkphp常量怎么定义并在模板中使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)