php中类和对象:静态属性、静态方法


Posted in PHP onApril 09, 2017

在PHP中,使用关键字 static 修饰成员属性和成员方法被称为静态属性和静态方法。静态属性和静态方法不需要在类被实例化的情况下可以直接使用。

静态属性

与普通的成员属性不同,静态属性属于类本身而不属于类的任何实例。静态属性可以被看做是存储在类当中的全局变量,可以在任何地方通过类来访问它们。

由于静态属性不受任何具体对象的限制,所以不需要建立类实例,而可以直接引用类中的静态属性,使用语法格式如下:

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

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

如果想在同一类的成员方法中访问静态属性,可以通过在该静态属性的名称前加上操作符”self::”来实现。例子如下:

class DaBing{
  static $bing=0;   //定义静态属性 bing
  function addOne(){
    self::$bing++;    //调用同一类中的静态属性 bing
    echo"\$bing的值为:".self::$bing++;
  }
}
$obj=new DaBing();
$obj->addOne();

该程序使静态属性的值加1,执行结果为:1

静态方法

在PHP中将成员方法声明为静态,就称其为静态方法。由于静态方法不受任何具体对象的限制,所以不需要建立类实例就可以直接引用类中的方法。语法格式如下:

类名称::静态方法名称([参数1,参数2,……])
与调用静态属性相同,在类中使用操作符”self::”来表示调用同一类中的静态方法,例子如下:

class DaBing{
  static function addOne($number){ //定义静态方法 addOne()
    echo"\$number+1=";
    echo $number+1;
  }
  static function showResult($number){
    echo"\$number=".$number;
    echo"<br>";
    self::addOne($number); //调用同一类中的静态方法 addOne()
  }
}
$number=100;
DaBing::showResult($number);

该程序执行的结果为:

$number=100
$number+1=101

PHP 相关文章推荐
PHP EOT定界符的使用详解
Sep 30 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
简单的PHP多图上传小程序代码
Jul 17 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
Smarty foreach控制循环次数的一些方法
Jul 01 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 #PHP
PHP对象相关知识总结
Apr 09 #PHP
YII2框架中使用yii.js实现的post请求
Apr 09 #PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 #PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 #PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 #PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 #PHP
You might like
用PHP实现的随机广告显示代码
2007/06/14 PHP
php 文本文件的读取效率
2012/02/10 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
毕业生的自我鉴定
2013/10/29 职场文书
大学生就业求职信
2014/06/12 职场文书
2015元旦节寄语
2014/12/08 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
爱心募捐感谢信
2015/01/22 职场文书
庐山导游词
2015/02/03 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
AJAX学习笔记
2021/05/18 Javascript
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
python套接字socket通信
2022/04/01 Python
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL
win7配置本地ftp服务器的图文教程
2022/08/05 Servers