php中如何声明静态属性,PHP使用static关键字声明静态属性和静态方法

本文详细介绍了PHP中static关键字的作用,包括静态属性和静态方法的声明、访问和使用规则。静态属性属于类本身,不依赖于类实例,可以在任何地方通过类名访问。静态方法也不需要实例化对象即可调用,但不能访问非静态成员。通过实例展示了如何在类中定义和使用静态属性和方法,强调了它们在内存管理和效率上的特点。
摘要由CSDN通过智能技术生成

PHP使用static关键字声明静态属性和静态方法

在PHP中,通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法。

静态属性和静态方法不需要在被类实例化的情况下就可以直接使用。

1. 静态属性

静态属性就是使用static关键字修饰的成员属性,它属于类本身而不属于类的任何实例。它相当于存储在类中的全局变量,可以在任何位置通过类来访问。

静态属性不能通过一个类已实例化的对象来访问。

静态属性访问的语法格式如下:

类名称::$静态属性名称

其中的符号“::”被称为范围解析操作符,用于访问静态属性、静态方法和常量,还可以用于覆盖类中的成员和方法。

在静态属性的名称前加上操作符“self::”,即可在类内部的成员方法中访问静态属性。而只使用类名称::,则可以在类外面调用类内部的静态属性。

注意:

静态属性不可以由对象通过->操作符来访问。

就像其它所有的PHP静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。

2. 静态方法

静态方法就是通过static关键字修饰的成员方法。由于它不受任何对象的限制,所以可以不通过类的实例化直接引用类中的静态方法。

静态方法可以通过一个类已实例化的对象来访问。

静态方法引用的语法格式如下:

类名称::静态方法名称([参数1,参数2,...])

同样,在静态方法的名称前加上操作符“self::”,即可在类内部的成员方法中引用静态方法。而只使用类名称::,则可以在类外面调用类内部的静态方法。

注意:

在静态方法中,只能调用静态变量,而不能调用普通变量;而普通方法则可以调用静态变量。

用静态方式调用一个非静态方法会导致一个E_STRICT级别的错误。

由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。

提示

使用静态成员,除了可以不需要实例化对象,另一个作用就是在对象被销毁后,仍然保存被修改的静态数据,以便下次继续使用。

为了兼容PHP 4,如果没有指定为protected或private,静态属性和静态方法则默认为公有public。

自PHP 5.3.0起,可以用一个变量来动态调用类,但该变量的值不能为关键字self、parent或static。

说明

静态成员不用实例化对象,当类第一次被加载时就已经分配了内存空间,所以直接调用静态成员的速度要快一些。但如果静态成员声明得过多,空间一直被占用,反而会影响系统的功能。这个尺度只能通过实践积累才能真正把握!

实例

class website{

static $num="0"; // 定义静态变量

public function visit(){ // 定义visit方法

echo "您是第".self::$num."位访客!"; // 输出静态变量信息

self::$num++; // 静态变量做自增运算

}

}

echo '第一次实例化调用:
';

$website=new website(); // 实例化对象

$website->visit(); // 调用对象$website的visit()方法

$website->visit();

$website->visit();

echo '
第二次实例化调用:
';

$website2=new website(); // 改变对象句柄实例化对象

$website2->visit();

$website2->visit();

$website2->visit();

?>

在浏览器中查看PHP使用static关键字声明静态属性和静态方法的显示效果。如下图所示:

896d347424f600dd7df2be1e935a95b4.png

AS3.0声明静态属性和静态方法

静态属性的变量声明要加static,static var 名称:属性类型=值 静态属性的常量声明要加static或者const,并在声明时就要赋值.static||const var 名称:属性类型= ...

使用static关键字修饰一个属性

//使用static关键字修饰一个属性 //static作用: //static:静态 //1.使用static关键字修饰一个属性,声明为static的变量本质就是一个全局变量; //2.静态变量或方 ...

PHP static静态属性和静态方法

这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...

php面向对象中static静态属性和静态方法的调用

这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了php中static静态属性和静态 ...

static静态属性和静态方法的原理与调用技巧

这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下     本文实例讲述了php中static静态属 ...

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象 ...

php静态属性和静态方法

php静态属性和静态方法 2012-09-29 10:18 1518人阅读 评论(0) 收藏 举报 phpfunction 本php教程主要是学习php中静态属性和静态方法的使用方法和基本的示例. · ...

C:static 关键字、静态变量、跨类访问数据

static 在OC中的使用 参考1   参考2   参考3   参保4    参考5 跨类访问成员 参考 +号方法就是类方法(静态方法),说明不用创建对象,可以直接通过类型去直接调用这个方法,在OC ...

Class的使用,构造方法,实例属性和实例方法,静态属性和静态方法,this和super关键字,类的继承

s6新增了一种定义对象实例的方法,Class(类)这个概念,作为对象的模板.class可以看作只是一个语法糖,通过class关键字,可以定义类.让对象原型的写法更加清晰.更像面向对象编程的语法. 一. ...

随机推荐

关于导出Excel

Asp.Net 在刚毕业那会,做项目全是服务器控件.导出Excel的代码也很简单,在button触发后台事件后,后台生成一个excel文件,然后读取成字节,输出到客户端. Response.AddHe ...

Guava 10-散列

概述 Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换.此外,使用Java内建方法实现的散列码通常是劣质的,部分是因为它 ...

Repeater和Gridview前台显示行号的方法

Repeater : Container.ItemIndex (行号从零开始,如果想改为从1开始,那么可以将以上的代码改为Container.ItemIndex + 1),见下示例:

Unity3D 灰度shader(改编自NGUI)

原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:[] 本文链接地址: 灰度shader 废话不多说,直接图解流程: 1.原图 2.改动shader 打开NGUI自带的shader ...

AutoPy首页、文档和下载 - 跨平台的Python GUI工具包 - 开源中国社区

AutoPy首页.文档和下载 - 跨平台的Python GUI工具包 - 开源中国社区 AutoPy是一个简单跨平台的 Python GUI工具包,可以控制鼠标,键盘,匹配颜色和屏幕上的位图.使用纯A ...

css中的hover ,关于li与a标签的问题

使用 Laravel 数据填充生成 中文 测试数据

Laravel5.4 及更新版本设置了相关的配置项 app.faker_locale,只不过在文档和默认的配置文件中看不到这一参数.相关源码在 Illuminate\Database\Database ...

iOS UI-(多)视图控制器的生命周期、加载方法和模态视图方法以及屌丝方法

#import "ViewController.h" #import "SecondViewController.h" @interface ViewContr ...

poj 1966(顶点连通度)

题意:给出一个n个节点和m条边的图,求该图的顶点连通度. 分析: 顶点连通度的求解可以转换为网络最大流问题. (1)原图G中的每个顶点v变成网络中的两个顶点v‘和v’‘,顶点v’至v''有一个条弧(有 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值