通常在模板开发中,我们可以在多处定义全局变量,以供在不同的模板中显示。

全局变量的定义

建议按照不同的需要,在以下不同的位置进行全局变量的定义:

入口文件全局位置:定义常量,通常该常量是不做修改,而且在全部模板中生效,如CSS/JS/图片路径等。

控制器父类:用一个继承于spController的控制器类代替spController,然后在该控制器的构造函数中进行全局变量定义。此用法是较方便而且灵活,可以设置变量、类实例化句柄、甚至是模板HTML代码等。在所有继承于该类的控制器中生效。

当前控制器构造函数:在当前控制器中加入构造函数,在构造函数中可以进行对当前控制器全部动作生效的变量定义,同样,可以设置变量、HTML等。

首先我们在入口文件全局位置进行常量定义

require(SP_PATH."/SpeedPHP.php");

// 这里是入口文件全局位置

import(APP_PATH.'/controller/top.php'); // 需要先载入top控制器父类

define('GLOVAR','我是在入口文件定义的静态常量');

spRun();

注意:由于本例中加入了top控制器来代替spController的作用,所以需要在入口文件全局位置载入top控制器文件,否则将提示找不到top类的错误。

然后,在top类(top控制器类继承于spController,其他控制器都继承于top)的构造函数中,进行“控制器父类”的变量赋值。

// top继承于spController,从而代替spController的作用

class top extends spController

{

// 构造函数,进行全局操作的位置

function __construct(){

// 必须加入启动父类构造函数的操作

parent::__construct();

// 开始全局操作

$this->fromtop = '我在TOP的位置,在所有继承于top的控制器中都可以使用';

}

}

我们继续在当前控制器(main)的构造函数中增加变量赋值,这些变量只在当前控制器中生效——在user控制器中就没有数据了。

// 控制器都继承于top

class main extends top

{

// 构造函数,进行当前控制器全局操作的位置

function __construct(){

// 必须加入启动父类构造函数的操作

parent::__construct();

// 这里放置当前控制器的全局操作

$this->frommain = '我在MAIN的全局位置,在MAIN控制器内使用';

}

...

最后运行一下。分别对比main/index,main/show,user/index的显示结果。

参考来源

php给全局变量重新赋值,SpeedPHP/全局变量赋值相关推荐

  1. JQuery中使用Ajax赋值给全局变量失败异常的解决方法,jqueryajax

    我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢? 原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去, ...

  2. 局部变量和全局变量,如何减少全局变量的频繁使用

    Author:快来啾啾我 ps:废了废了 文章目录 前言 一.局部变量(Local Variable) 1.局部变量是什么? 1.1局部变量存储位置 2.局部变量是什么? 二.全局变量(Global ...

  3. html 多页面全局变量,JavaScript如何定义全局变量

    JavaScript中定义全局变量主要分为显式声明或者隐式声明.下面本篇文章就来给大家具体介绍一下,希望对大家有所帮助. 方法1:显式声明 使用var(关键字)+变量名(标识符)的方式在functio ...

  4. php局部全局变量,PHP局部变量与全局变量

    一.局部变量 定义:在函数内部声明,且只能在函数内部调用的变量. 注意:参数也是局部变量的一种. demo1: 1 function demo1(){ 2     $age = 10; 3 } 4 5 ...

  5. python支持链式赋值和多重赋值_Python: 链式赋值的坑

    在我们使用Python的过程中, 经常遇到赋值语句, 就像下面的那样: a = 3 b = 3 可能你会觉得我又要说什么变量赋值就是引用, 这么简单的知识就不讨论啦, 相信聪明的大家肯定都知道的, 我 ...

  6. php中全局变量global和超全局变量$GLOBALS

    php中全局变量global和超全局变量$GLOBALS 1.global Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require ...

  7. python类对象赋值_Python对象赋值、浅拷贝、深拷贝

    Python中,基本数据类型,理解为常见数据类型:布尔型.整型.浮点型.字符串.列表.元组.字典.集合,随语言不同而不同,但是根据在内存中存储方式的不同,区分开原子类型和容器类型. 对象赋值 对象的赋 ...

  8. 进程中的信号赋值与变量赋值

    进程中的信号赋值与变量赋值 比较对象 信号SIGNAL 变量VARIABLE 基本用法 用于作为电路的信号连线 用于作为进程中局部数据存储单元 适用范围 在整个结构体内的任何地方都能适用 只能在所定义 ...

  9. C#中字段、属性、只读、构造函数赋值、反射赋值的相关

    C#中字段.属性和构造函数赋值的问题 提出问题 首先提出几个问题: 1.如何实现自己的注入框架? 2.字段和自动属性的区别是什么? 3.字段和自动属性声明时的直接赋值和构造函数赋值有什么区别? 4.为 ...

最新文章

  1. flex 3 使用手册
  2. Linux内核defconfig在哪,Linux内核根目录中的配置文件.config中包含了许多宏定义,...
  3. Linux网卡改为动态过去IP,Linux修改网卡ens33为eth0以及centos7下修改动态IP为静态IP地址...
  4. EditThisCookie使用
  5. C++ 控制结构和函数(一) —— 控制结构
  6. pythonbool类型数组生成_对numpy中布尔型数组的处理方法详解
  7. 木老师教笨笨课堂——系列讲座(从函数指针到委托) 四、C#的委托
  8. 旧服务器如何虚拟化,4个步骤教你如何重复利用旧虚拟化主机
  9. 联通将推自有品牌手机沃Phone 基于Android
  10. MATLAB使用GPU加速计算
  11. [Swift]语言介绍
  12. 不用/,*,mod乘、除、取模运算的除法
  13. ppt中的流程图怎么整体移动_PPT中绘流程图
  14. Linux安装和使用Trickle的方法
  15. Unity两种获取屏幕点击位置的世界坐标方法
  16. Karen Keegans加盟罗克韦尔自动化任人力资源高级副总裁
  17. Explainable Artificial Intelligence Approaches: A Survey
  18. Python模块:Re模块、附软件开发目录规范
  19. Docker系列(八):Kubernetes横空出世背后的秘密
  20. Simple.Docx,简洁的word文件(docx格式)操作组件

热门文章

  1. 通过VMware vSphere Client管理虚拟机
  2. mysql主从脚本--从
  3. iphone怎在计算机硬盘打开,如何设置MAC(即苹果系列电脑)默认从外置硬盘启动...
  4. python前景怎么样-Python在中国的发展前景怎么样?有哪些就业方向?
  5. 数学漫谈:一元三次方程求解
  6. Android手机获取QQ闪照的方法
  7. 程序员,保住你的钱袋子!
  8. 对Adobe Flex的十大误解
  9. mysql 表结构查询的SQL语句
  10. What Is My IP - Shows Your IP Address