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关键字声明静态属性和静态方法的显示效果。如下图所示:

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''有一个条弧(有 ...

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

  1. C++基础之static关键字(1)--静态局部变量详解

    本篇文章主要讲解C++基础中static关键字的静态局部变量并进行实例演示. 一.静态局部变量定义 在讲静态局部变量时,我们首先看一下全局变量和局部变量. 1.全局变量 全局变量定义在所有函数之外,并 ...

  2. 菜鸟学JAVA之——static关键字(静态属性和动态属性的区别)

    为什么static不用创建对象就可以被调用? 在未创建对象之前,所有静态属性或方法都放在元数据区里,静态的可通过类名调用 public class Cat{public static String n ...

  3. Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入

    static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...

  4. 1.16 static关键字(静态变量和静态方法)

    在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有. 静态成员不依赖于类的特定实例,被 ...

  5. 面试中常被问(一)static关键字

    static关键字 1在C语言中,static修饰的变量与全局变量类似,在程序编译时(程序运行前)加载到内存数据段上,其中细分为(bss段:存放未初始化的全局变量,data段:存放初始化的全局变量) ...

  6. php 全局 静态变量,php的static关键字和全局变量

    1.全局变量[其不属于面向对象的思想,因为其放在对象之外的],面向对象有一个特点,其实封装的,php希望其所有的成员都应该放在类中:php的面向对象是基于面向对象的,不是纯粹面向对象的:也就是其可以面 ...

  7. php 类static引用函数吗,php中在变量和函数前加static关键字之后的区别

    static全局变量和普通全局变量,static局部变量和普通局部变量,static函数与普通函数的区别?下面本文将一一为你解答. (1)全局变量(外部变量)的说明之前再冠以static 就构成了静态 ...

  8. static在php中,php中static关键字在类中的使用

    static关键字用来修饰属性.方法,称这些属性.方法为静态属性.静态方法. static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类 ...

  9. Java-Day11 面向对象遍程的入门 (类属性的默认值、构造方法、类的成员、static关键字、类的成员加载顺序、Java(权限)访问修饰符)

    目录 1. 类的属性的默认值问题 2. 构造方法(Constructor) 3. 类的成员 3.1 类的成员之一:属性 3.2 UML类图 4. static关键字 5. 类的成员加载(运行)顺序 6 ...

最新文章

  1. Udacity机器人软件工程师课程笔记(九)-ROS-Catkin包、工作空间和目录结构
  2. 一个多线程应用的最佳示例
  3. IDEA for Java Web
  4. GridView行号大集合
  5. Sad Angel (悲伤的天使)-Игорь Крутой
  6. 钱德沛教授:云计算和网格计算差别何在?
  7. c语言编常见算法,5个常见C语言算法
  8. SpringSecurity Form Login
  9. android音频杂音问题_如何让短视频音质更好,AE+PR短视频音频输出处理讲解
  10. mysql实时监控工具
  11. 删除linkinfo.dll
  12. Parallel GC
  13. 红米笔记本linux系统版本,小米笔记本安装Win10+Ubuntu16.04 LTS 双系统
  14. LVGL lv_msgbox消息对话框(22)
  15. python与sap_在python中连接SAP HANA
  16. 面试时工作经验不足,如何才能打动HR?
  17. linux dolphin模拟器,Dolphin for Mac(GameCube模拟器)
  18. android lint 安全检测,Android Lint检查
  19. Lightroom教程_如何导入lr预设?
  20. 使用Charles监控手机应用的网络请求

热门文章

  1. 1016. 部分A+B (这个版本仅供讨论)
  2. android 电量控制
  3. 国外6个最好的广告联盟营销推荐
  4. 思科 计算机网络 第六章测试考试答案
  5. s00devs_Devs @ Home –实时网络研讨会– 5月14日,13:00 CEST:高效应用程序的7个JVM参数
  6. 英语基础不好可以学会编程吗?
  7. 周易六十四卦——明夷卦
  8. 庄股高手和你谈选股绝招(2)
  9. 依据sh_goods的结构与数据,在mydb数据库中创建一张tm_goods表,并将价格在20到50之间的商品价格减5元,库存量再新增300件。
  10. 这么简单,抄抄,改改就行啦