PHP之static静态变量详解(二)
2023-09-14 08:57:27 时间
在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料。
static用法如下:
1.static 放在函数内部修饰变量
2.static放在类里修饰属性,或方法
3.static放在类的方法里修饰变量
4.static修饰在全局作用域的变量
所表示的不同含义如下:
1.在函数执行完后,变量值仍然保存
如下所示:
<?php function testStatic() { static $val = 1; echo $val; $val++; } testStatic(); //output 1 testStatic(); //output 2 testStatic(); //output 3 ?>
2.修饰属性或方法,可以通过类名访问,如果是修饰的是类的属性,保留值
如下所示:
<?php class Person { static $id = 0; function __construct() { self::$id++; } static function getId() { return self::$id; } } echo Person::$id; //output 0 echo "<br/>"; $p1=new Person(); $p2=new Person(); $p3=new Person(); echo Person::$id; //output 3 ?>
3.修饰类的方法里面的变量
如下所示:
<?php class Person { static function tellAge() { static $age = 0; $age++; echo "The age is: $age "; } } echo Person::tellAge(); //output 'The age is: 1' echo Person::tellAge(); //output 'The age is: 2' echo Person::tellAge(); //output 'The age is: 3' echo Person::tellAge(); //output 'The age is: 4' ?>
4.修饰全局作用域的变量,没有实际意义(存在着作用域的问题,详情查看)
如下所示:
<?php static $name = 1; $name++; echo $name; ?>
另外:考虑到PHP变量作用域
<?php include 'ChromePhp.php'; $age=0; $age++; function test1() { static $age = 100; $age++; ChromePhp::log($age); //output 101 } function test2() { static $age = 1000; $age++; ChromePhp::log($age); //output 1001 } test1(); test2(); ChromePhp::log($age); //outpuut 1 ?>
可以看出:这3个变量是不相互影响的,另外,PHP里面只有全局作用域和函数作用域,没有块作用域
如下所示:
<?php include 'ChromePhp.php'; $age = 0; $age++; for ($i=0; $i<10; $i++) { $age++; } ChromePhp::log($i); //output 10; ChromePhp::log($age); //output 11; ?>
参考资料:
相关文章
- PHP动态模式和静态模式区别
- PHP代做编程辅导:CPT270 Cinemas
- PHP检查对象或类中是否存在属性
- typecho开启伪静态,去掉那个讨厌的index.php
- PHP static:静态变量
- PHP在MySQL中实现安全的表单提交(php表单提交mysql)
- php is_writeable函数bug问题详解编程语言
- 使用PHP和MySQL实现统计分析的可能性(phpmysql统计)
- 怎么办解决PHP中断MySQL连接的办法(php没有mysql)
- PHP中使用Redis缓存数据的优势(php使用redis)
- 使用PHP连接MySQL数据库实现数据操作(php连接mysql类)
- Linux部署PHP:极速入门指南(linux如何部署php)
- 、mysqlLinux安装PHP和MySQL的指南(linux 安装php)
- 使用PHP编辑器轻松编写Linux平台代码(php编辑器linux)
- PHP技术防止MSSQL注入风险(php防止mssql注入)
- 简便快捷:在PHP服务器上使用MSSQL(php服务器 mssql)
- 文件Linux 下如何快速删除PHP文件(linux 删除php)
- MSSQL 数据库在PHP中的登录实现(mssql登录php)
- 利用PHP和MySQL建立连接的简单方式(php和mysql 连接)
- php日历[测试通过]
- 需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
- PHP伪静态页面函数附使用方法
- php静态变量与自定义常量的使用方法
- php中static静态变量的使用方法详解
- PHP的autoload自动加载机制使用说明
- PHP类的静态(static)方法和静态(static)变量使用介绍
- php中用加号与用array_merge合并数组的区别深入分析
- php集成环境xampp中apache无法启动问题解决方案
- PHP通过内置函数memory_get_usage()获取内存使用情况
- php获取客户端电脑屏幕参数的方法