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 相关文章推荐
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
php中socket的用法详解
Oct 24 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
php使用for语句输出三角形的方法
Jun 09 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 PHP
ThinkPHP静态缓存简单配置和使用方法详解
Mar 23 PHP
php数据访问之增删改查操作
May 09 PHP
PDO::rollBack讲解
Jan 29 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
用php定义一个数组最简单的方法
Oct 04 PHP
tp5 实现列表数据根据状态排序
Oct 18 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
谈谈PHP语法(4)
2006/10/09 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
理解Javascript_08_函数对象
2010/10/15 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
NumPy中的维度Axis详解
2019/11/26 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
体育教师求职信
2014/05/24 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书