静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。

只要在变量前加上关键字static,该变量就成为静态变量了。

< ?php

function test()

{

static $nm = 1;

$nm = $nm * 2;

print $nm."

";

}

// 第一次执行,$nm = 2

test();

// 第一次执行,$nm = 4

test();

// 第一次执行,$nm = 8

test();

? >

程序运行结果:

2

4

8

函数test()执行后,变量$nm的值都保存了下来了。

在class中经常使用到静态属性,比如静态成员、静态方法。

类的静态成员

静态变量$nm属于类nowamagic,而不属于类的某个实例。这个变量对所有实例都有效。

::是作用域限定操作符,这里用的是self作用域,而不是$this作用域,$this作用域只表示类的当前实例,self::表示的是类本身。

< ?php

class Test

{

public static $var = 1;

public function testMethod()

{

self::$var += 2;

echo self::$var . '

';

}

}

$test1 = new Test();

$test1 -> testMethod();

$test2 = new Test();

$test2 -> testMethod();

? >

程序运行结果:

3

5

静态属性

< ?php

class TestParent

{

public static $test = 'test var';

public function testMethod()

{

return self::$test;

}

}

class Test extends TestParent

{

public function articleMethod()

{

return parent::$test;

}

}

// 通过作用于限定操作符访问静态变量

print TestParent::$test . "

";

// 调用类的方法

$test1 = new TestParent();

print $test1->testMethod() . "

";

print Test::$test . "

";

$test2 = new Test();

print $test2->testMethod() . "

";

? >

程序运行结果:

test var

test var

test var

test var

简单的静态构造器

PHP没有静态构造器,你可能需要初始化静态类,有一个很简单的方法,在类定义后面直接调用类的Demonstration()方法。

function Demonstration()

{

return 'This is the result of demonstration()';

}

class MyStaticClass

{

//public static $MyStaticVar = Demonstration(); //!!! FAILS: syntax error

public static $MyStaticVar = null;

public static function MyStaticInit()

{

//this is the static constructor

//because in a function, everything is allowed, including initializing using other functions

self::$MyStaticVar = Demonstration();

}

} MyStaticClass::MyStaticInit(); //Call the static constructor

echo MyStaticClass::$MyStaticVar;

//This is the result of demonstration()

? >

程序运行结果:

This is the result of demonstration()

静态变量php跨页面,PHP的静态变量 - jone的个人页面 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. 申请一个Java公众号怎么命名_警惕不规范的变量命名 - Java公众号_Kirito的技术分享的个人空间 - OSCHINA - 中文开源技术交流社区...

    就在最近,项目组开始强调开发规范了,今天分享一个变量名命名不规范的小案例,强调一下规范的重要性. Boolean变量名命名规范 16年底,阿里公开了<Java开发规范手册>,其中有一条便是 ...

  2. Ai智能对话页面html,js人工智能对话框 - osc_q50is30g的个人空间 - OSCHINA - 中文开源技术交流社区...

    对话框实现效果如图: 实现的代码如下: 京东在线客服 /*CSS标签样式的写法,直接写标签名*/ body{ background:url("images/1.jpg") no-r ...

  3. python变量无需指定类型对吗_Python变量类型 - osc_3rgq3dae的个人空间 - OSCHINA - 中文开源技术交流社区...

    变量存储在内存中的值,这就意味着在创建变量时会在内存开辟一个空间. 基于变量的数据类型,解析器会分配指定内存,并决定什么数据可以被存储在内存中. 因此变量可以指定不同的数据类型,这些变量可以存储整数. ...

  4. php rn 返回,rn滑动返回页面监听 - osc_13a0punx的个人空间 - OSCHINA - 中文开源技术交流社区...

    开发rn的同学都已经知道这个问题很坑了,真的很难弄,网上的方法尝试过很多,返回的的时候回调,是用的最多的,最开始我也是用的这种方式,但是滑动返回的时候监听不到.并且用起来也比较麻烦,不但需要在当前页面 ...

  5. php天下第一 金馆长,php入门1 - 金馆长1的个人页面 - OSCHINA - 中文开源技术交流社区...

    一.基本语法: 格式: php脚本块以<?php ......content   ?>这种格式. 结束:每句结束分号 注释://单行    /**/注释块 输出文本指令: echo 和 p ...

  6. python清空变量值_Python的变量 - YGH1215的个人空间 - OSCHINA - 中文开源技术交流社区...

    听完下面这首日语歌,你也差不多阅读完此文了   : ) 1. 概念 Python变量是用于存储值所在的内存位置.换句话说,python程序中的变量将数据提供给计算机进行处理. Python中的每个值都 ...

  7. 静态html的ajax如何发请求,静态页面ajax - 冥焱的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.静态页面 $.ajax({ type:"get", url:"http://localhost:8080/app/register/sendSMS",//请 ...

  8. 去静态化 php,PHP页面静态化 - 菜鸟要飞啊的IT小窝 - OSCHINA - 中文开源技术交流社区...

    静态网页是服务器上面真实存在的页面,它不需要编译,用户就可以直接访问这样的网页,后缀一般为.html或者是.htm.如果我们把这个网页上传到我们的服务器或者是空间,那么它就可以通过直接访问我们的域名去 ...

  9. html三列布局源码,HTML三列布局 - 黄柳淞的个人页面 - OSCHINA - 中文开源技术交流社区...

    1.三列布局1 三列布局 body{padding: 0;margin: 0;} .left{width:33.3%;height: 500px;background-color: #ccc;floa ...

最新文章

  1. Python文本预处理:步骤、使用工具及示例
  2. Android -- 消息处理机制源码分析(Looper,Handler,Message)
  3. cricheditview实现语法高亮和行号_Markdown语法详解及工具介绍
  4. 互联网推送服务原理:长连接+心跳机制(MQTT协议)
  5. Project Euler
  6. Qt 图片自适应QLabel大小
  7. c语言pow函 新闻,c语言pow函数(C语言pow函数)
  8. 阿里云OSS使用详解(java版本)
  9. python代码复制运行不了_pycharm 复制代码出现空格的解决方式
  10. 偏微分方程的matlab解法微盘,偏微分方程的MATLAB解法--陆君安.pdf
  11. 深发银行为什么要更名为平安银行?
  12. T-SQL Recipes之Database Backups
  13. Educational Codeforces Round 40千名记
  14. 如果计算机电源突然断电 会导致,突然断电对电脑伤害有多大?
  15. Node 在沪江的大规模实践
  16. 国税发票查验API接口说明
  17. matlab如何与ccs关联,CCS与Matlab
  18. 鲁大师linux系统打印机驱动怎么安装,鲁大师安装打印机驱动的具体操作方法
  19. windows7 中文乱码解决方法
  20. wpf指定的元素已经是另一个元素的逻辑子元素。请先将其断开连接。_大魔王王者荣耀绝悟,游戏AI逻辑的底层是啥?...

热门文章

  1. java cors_JAVA用CORS实现跨域请求
  2. 【Swin Transformer】Win10使用Swin Transformer做目标检测 (使用自己的数据集 + 图解超详细)
  3. 达人评测 i9 13900H和r9 5900hx选哪个
  4. 学计算机选北京工业还是西南交通,本科生物医学工程专业排名,2020选择哪所大学好?...
  5. Python——读取txt文件每一行数据
  6. 计算机网络协议第二章,链路层协议
  7. 如何本地部署admui?
  8. 偶像工场,开启虚拟人数字藏品新时代
  9. 成都数字孪生工厂3D模型,三维可视化建模,三维虚拟仿真交互模型
  10. CSS好玩关键字记录