PHP静态方法和静态属性及常量属性的区别与介绍


Posted in PHP onMarch 22, 2019

PHP中若使用static关键字来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。

程序中为什么要使用静态方法和属性呢?它们有几个特性是比较有用的:不需要实例化类就可以访问静态方法和属性,在代码的任何地方都可以使用!

<?php
class Example{
 static public $num = 0;
 static public function staticFunc(){
 self::$num++;
 print self::$num;
 }
}
echo Example::$num;
echo Example::staticFunc();
?>

需要注意的是:

1.静态方法不能访问普通属性,只能访问静态属性

2.静态方法是以类为作用域的,所以不用实例化就可以使用::来连接静态属性和静态方法

3.静态方法中不能使用伪关键词

那么常量属性和静态属性有什么区别呢?

<?php
class Example{
  const NUM = 0;
  //...
}
?>

常量属性不以$开头 而是以大写字母命名,他与静态属性的区别是它不可以被重新复制,否则会解析错误。

常量属性

有些属性是不能改变的

在PHP 5可以在类中定义常量属性,和全局变量一样,类常量一旦设置后就不能改变。常量属性用const关键字来声明。常量不像常规属性那样以 $ 开头。按照惯例,只能用大写字母来命名常量,如下所示:

class shopProduct {
    constAVAILABLE = 0;
    //…
}

常量属性只包含基本数据类型的值。不能将一个对象指派给常量。像静态属性一样,只能通过类而不能通过类的实例访问常量属性。引用常量时不需要用 $ 作为前导符,如下所示:

echoshopProduct::AVAILABLE;

给已经声明过的常量赋值会引起解析错误。

当需要在类的所有实例中都能访问某个属性,并且属性值无需改变时,应该使用常量。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
简单的过滤字符串中的HTML标记
Dec 25 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
php生成扇形比例图实例
Nov 06 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
PHP对象实例化单例方法
Jan 19 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
简单实用的PHP文本缓存类实例
Mar 22 #PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 #PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 #PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 #PHP
PHP里的$_GET数组介绍
Mar 22 #PHP
PHP匿名函数(闭包函数)详解
Mar 22 #PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 #PHP
You might like
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
详解python之配置日志的几种方式
2017/05/22 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python实现上下文管理器的方法
2020/08/07 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
奥利奥广告词
2014/03/20 职场文书
我的祖国演讲稿
2014/05/04 职场文书
2015年女职工工作总结
2015/05/15 职场文书
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技