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 16 PHP
使用php 获取时间今天明天昨天时间戳的详解
Jun 20 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 PHP
php 原生分页
Apr 01 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数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
php解决安全问题的方法实例
2019/09/19 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
智能电子应届生求职信
2013/11/10 职场文书
校园广播稿500字
2014/02/04 职场文书
安全生产责任书
2014/03/12 职场文书
课程改革实施方案
2014/03/16 职场文书
活动总结报告范文
2014/05/04 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
Python turtle编写简单的球类小游戏
2022/03/31 Python
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS