【前言】
本文总结下TP模板常量
【概论】
简单理解:具体用法和选择比较随意,怎么简单怎么来。只要理解了每个常量的含义,就可以运用自如。
例如:在删除操作模板加入删除方法路径,可以从__PUBLIC__域名后开始,也可以找__CONTROLLER__控制器
【主体】
(1)由来:实际开发中,在引入css、js、图片等文件时,往往需要些一些复杂的路径。这时可以考虑用模板常量替换机制,将复杂路径简单化
(2)ThinkPHP里系统默认提供了一下几个常用的模板常量(因为是模板常量,所以只能在模板中使用,不能在控制器里使用)
__MODULE__:(模块/组件),输出到分组,表示从域名后开始到分组名结束的路由。/index.php/Admin __CONTROLLER__:(控制),输出到控制器,/index.php/Admin/Test __ACTION__:(方法),输出到方法,/index.php/Admin/Test/test1 __PUBLIC__:表示从域名后开始找,站点根目录下Public目录路由,/public __SELF__:当前路由,从域名后开始到路由结束,与__ACTION__区别: /index.php/Admin/Test/test1/id=10,具体输出不同。当没有参数时,__SELF__和__ACTION__相同
(3)模板常量来源?
这里模板常量是通过模板内容替换机制来实现的,并非是常量的定义。所以模板常量并非是常量,而是字符串。
替换机制可以查看行为文件ThinkPHP/Library/Behavior/ContentReplace.Behaviour.class.php
拓展:查看后即可得出行为文件命名,文件名.Behaviour.class.php
/** * 模板内容替换 * @access protected * @param string $content 模板内容 * @return string */ protected function templateContentReplace($content) { // 系统默认的特殊变量替换 $replace = array( '__ROOT__' => __ROOT__, // 当前网站地址 '__APP__' => __APP__, // 当前应用地址 '__MODULE__' => __MODULE__, '__ACTION__' => __ACTION__, // 当前操作地址 '__SELF__' => htmlentities(__SELF__), // 当前页面地址 '__CONTROLLER__'=> __CONTROLLER__, '__URL__' => __CONTROLLER__, '__PUBLIC__' => __ROOT__.'/Public',// 站点公共目录 ); // 允许用户自定义模板的字符串替换注意:行为文件是系统自带的,一般不建议去改动 if(is_array(C('TMPL_PARSE_STRING')) ) $replace = array_merge($replace,C('TMPL_PARSE_STRING')); $content = str_replace(array_keys($replace),array_values($replace),$content); //这步便是通过模板内容替换机制str_replace return $content;
其模板常量的核心就是字符串的替换str_replace
(4)自定义模板常量
为了后期使用方便,可以在配置文件里定义一个自定义的模板常量
配置项为TMPL_PARSE_STRING
注意:开发时尽量不要修改系统配置文件,因为系统配置文件的作用范围十分广泛。可以将需要修改的配置项,在分组、应用级别的配置文件里去定义,不要直接在系统文件里修改。
例如:放到应用配置文件Common/Conf/config.php
<?php return array( //'配置项'=>'配置值' //模板常量 'TMPL_PARSE_STRING' => array( // __ROOT__.'/Public'站点公共目录,即根目录下public '__ADMIN__' => __ROOT__.'/Public/Admin', //定义好之后,可以通过__ADMIN__来访问静态资源路径 ) );
验证:模板输入__ADMIN__来验证,输出结果为/Public/Admin,表示验证成功
【注意】
①模板常量只能在模板文件中使用,不能用到js文件里去。除非将js移到模板文件。或者在js文件里,从域名后开始引入路径:域名/入口文件/分组名/控制器名/方法名/[参数]/[参数值]
.
相关推荐
### ThinkPHP系统常量解析 #### 一、概述 在PHP开发领域,ThinkPHP作为一款优秀的轻量级框架,被广泛应用于Web应用的快速开发之中。为了更好地理解并利用ThinkPHP进行高效编程,掌握其内置的一些核心常量是十分...
这些常量定义了ThinkPHP框架和项目的目录结构,包括核心类库、扩展目录、第三方类库、模板目录等。它们以THINK_PATH和APP_PATH为基础,拼接出具体的路径。例如: - CORE_PATH:ThinkPHP的核心类库目录,位于THINK_...
在ThinkPHP框架中,系统常量和预定义常量扮演着关键角色,它们为开发者提供了便捷的全局访问点,用于获取框架和应用的各种路径、状态信息以及配置设置。以下是对这些常量的详细解释: 1. 系统常量: - THINK_PATH...
- **常量参考**:列出了框架内部使用的常量。 - **助手函数**:列举了一系列常用的助手函数。 - **升级指导**:给出了从旧版本升级到5.0版本的指导步骤。 - **更新日志**:记录了版本更新的历史记录。 综上所述,TP...
在ThinkPHP模板开发中,当尝试在模板中使用如`__ROOT__`、`__PUBLIC__`等系统定义的路径常量时,这些常量在模板渲染后被替换为实际的服务器路径,而不是保持原样输出。这使得开发者在某些特定场景下无法直接显示这些...
本资源包“tp开发资源”显然专注于ThinkPHP框架的开发方式、模板标签的运用以及系统常量和快捷方式的实践。接下来,我们将深入探讨这些关键知识点。 一、ThinkPHP开发方式 ThinkPHP采用MVC(Model-View-Controller...
本文将详细介绍如何在ThinkPHP5中加载静态资源路径以及使用常量的方法。 1. **加载静态资源路径** 在ThinkPHP5中,为了方便开发者管理静态资源如CSS、JavaScript文件,框架提供了一些预定义的常量。这些常量使得...
手册的末尾部分还包含了一些附加信息,如配置参考、常量参考、升级指导、更新日志等,为开发者提供最新的开发信息和版本更新内容。尤其是关于ThinkPHP 5.0的更新日志,它为开发者及时了解框架的最新变化提供了重要的...
- **取消系统常量**:简化代码结构,提高可维护性。 - **助手函数增强**:增强了一些常用的助手函数,使得开发者能够更方便地使用这些函数。 - **类库别名机制**:引入了类库别名机制,使得代码更加清晰易懂。 ####...
- **模板标签**:使用自定义的模板标签来扩展模板功能。 - **变量输出**:在模板中输出变量的值。 - **系统变量**:访问框架提供的系统变量。 - **请求参数**:在模板中访问 HTTP 请求参数。 - **使用函数**:在模板...
【标题】"TP5笔记1"涉及的知识点主要围绕PHP框架ThinkPHP5展开,包括常量、后台执行、配置文件、控制器生成、URL路由、模板引擎、验证规则、第三方库集成以及邮件发送等方面。 1. **常量开发**:在ThinkPHP5中,...
解决这个问题的方法是在ThinkPHP的配置文件`config.php`中添加一个模板常量设置。这个设置允许我们自定义模板引擎需要自动替换的字符串。具体操作如下: ```php 'TMPL_PARSE_STRING' => array( '../Public' => ".....
还提供了常量参考、助手函数和升级指导等信息。 最后,手册强调它不能替代教程,而是作为开发中的参考工具,对于新手建议先阅读官方的《5.0入门系列教程》,并提供了ThinkPHP官方的QQ群信息,以供进一步学习和交流...
ThinkPHP5.1还提供了丰富的内置变量,比如`$Think`对象,它包含了模板相关的一些常量,`$Request`对象包含了当前请求的相关信息,`$Config`对象包含了系统的配置信息等。开发者可以通过这些内置变量来获取框架相关...
HTML文件可能被用作模板,与tp5的视图层进行交互,动态渲染页面内容。 【文件名称列表】"tp5-main" 可能是项目的主目录或者主要入口文件,它可能是整个项目的核心部分。在tp5中,"main"可能包含着项目的主要配置、...
4. **语法基础**:包括数据类型(如整型、浮点型、字符型、布尔型)、变量、常量的声明与使用;运算符(算术、关系、逻辑、位、赋值等)的掌握;流程控制语句(如if-else、switch、for、while循环)的理解与实践。 ...
2. **常量和函数**:使用`define()`和`const`来定义常量,确保数据在程序运行中不被更改。函数则是程序的基本执行单元,可以使用`global`关键字来使用全局变量。 3. **类的实现**:类是面向对象编程的基础,`class`...
- **Define标签**: 定义常量。 - **标签嵌套**: 标签可以相互嵌套。 - **import标签**: 导入外部文件。 - **使用PHP代码**: 直接使用PHP代码。 - **原样输出**: 输出未经处理的字符串。 - **模板注释**: 添加...
- 模板变量赋值推荐使用数组参数,如`this->assign(['userName' => '手心'])`,这可以使模板渲染更清晰。 - 数据查询推荐使用`find`和`select`方法,而不是`get`或`all`,因为它们提供了更多的控制和更好的性能...