浅析php变量修饰符static的使用
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。看看下面的例子:
代码如下:
function test(){
static $a=0;
$a++;
echo $a;
}
test();//1
test();//2
test();//3
Note: 静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。
代码如下:
static $a=0+1;
static $a=sqrt(121);
像上面的赋值方式会报错,不信你试试
相关推荐
-
PHP面向对象之旅:深入理解static变量与方法
static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法". 如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号"::"调用. static关键字可以用来修饰变量.方法. 不经过实例化,就可以直接访问类中static的属性和static的方法. static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法.因为静态属性和方法被创建时
-
开启PHP Static 关键字之旅模式
声明类成员或方法为static,就可以不实例化类而直接访问.不能通过一个对象来访问其中的静态成员(静态方法除外). 为了兼容PHP4,如果没有指定"可见性",属性和方法默认为public. 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用. 静态属性不可以由对象通过->操作符来访问. 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误. 就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式. 所以你可
-
PHP类的静态(static)方法和静态(static)变量使用介绍
在php中,访问类的方法/变量有两种方法: 1. 创建对象$object = new Class(),然后使用"->"调用:$object->attribute/function,前提是该变量/方法可访问. 2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以.但是有前提条件: A. 如果是变量,需要该变量可访问. B. 如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件: b2) 如果是非
-
php之static静态属性与静态方法实例分析
本文实例讲述了php之static静态属性与静态方法.分享给大家供大家参考.具体如下: <?php /* * static */ /*静态:属于类而不属于单个对象 (全局的,所有对象共享的) *静态属性:类的方法内调用静态属性时,不要使用$this->方式,而要使用self::的方式 *静态方法: *在类没有任何对象的时候也能被调用 *当成普通方法来用也没问题的 *在静态方法中不能调用普通方法 * * */ class xin { static private $name; public fu
-
php延迟静态绑定实例分析
本文实例讲述了php延迟静态绑定的方法.分享给大家供大家参考.具体分析如下: php延迟静态绑定:指类的self,不是以定义时为准,而是以计算时的运行结果为准.先看一个实例 <?php header("content-type:text/html;charset=utf-8"); class Human{ public static function hei(){ echo "我是父类的hei()方法"; } public function say(){//如
-
PHP中static关键字以及与self关键字的区别
概述 正在学习设计模式,之前有一篇文章关于单例模式的文章,重新读了这篇文章,发现对static关键字掌握不是很牢靠,重新温习一下. static关键字 PHP手册里对static关键字的介绍如下: 复制代码 代码如下: Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as
-
简单谈谈php延迟静态绑定
使用场景 先来观察以下代码: abstract class base { //do sth } class aClass extends base{ public static function create(){ return new aClass(); } } class bClass extends base{ public static function create(){ return new bClass(); } } var_dump(aClass::create()); var_
-
解析php中static,const与define的使用区别
define部分:宏不仅可以用来代替常数值,还可以用来代替表达式,甚至是代码段.(宏的功能很强大,但也容易出错,所以其利弊大小颇有争议.)宏的语法为:#define 宏名称 宏值作为一种建议和一种广大程序员共同的习惯,宏名称经常使用全部大写的字母.利用宏的优点:1)让代码更简洁明了当然,这有赖于你为宏取一个适当的名字.一般来说,宏的名字更要注重有明确直观的意义,有时宁可让它长点.2)方便代码维护对宏的处理,在编译过程中称为"预处理".也就是说在正式编译前,编译器必须先将代码出现的宏,用
-
PHP延迟静态绑定示例分享
没怎么用过这个新特性,其实也不算新啦,试试吧,现在静态类的继承很方便了 <?php class A { protected static $def = '123456'; public static function test() { echo get_class(new static); } public static function test2() { echo static::$def; } } class B extends A { protected static $def = '4
-
PHP Static延迟静态绑定用法分析
本文实例讲述了PHP Static延迟静态绑定用法.分享给大家供大家参考,具体如下: PHP5.3以后引入了延迟静态绑定static,它是为了解决什么问题呢?php的继承模型中有一个存在已久的问题,那就是在父类中引用扩展类的最终状态比较困难.来看一个例子. class A { public static function echoClass(){ echo __CLASS__; } public static function test(){ self::echoClass(); } } cla
随机推荐
- 使用FTP下载目录,即FTP命令批量自动下载的bat文件
- 教你使用javascript简单写一个页面模板引擎
- 教你轻松记住JS正则表达式
- js CSS操作方法集合
- C语言逻辑运算符知识整理
- PHP中Http协议post请求参数
- 获取远程flash并保存到本地
- MySQL5.6.31 winx64.zip 安装配置教程详解
- Linux CentOS MySQL 5.7.18 5.7.X安装教程
- PHP实时显示输出
- 详解PHP安装mysql.so扩展的方法
- iOS实现简单的二级菜单效果
- 原来ASP和PHP都是可以删除自身的
- Java Timezone类常见问题_动力节点Java学院整理
- c#使用ManagedWifi查看当前Wifi信号并选择wifi的示例
- 有关mysql优化的一些东东整理
- 详解如何用webpack打包一个网站应用项目
- 详解nodejs微信公众号开发——5.素材管理接口
- IIS假死的解决方法 缩短IIS应用池回收时间来实现减少IIS假死
- 利用远程注册表加强系统安全