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中显示格式化的用户输入
Oct 09 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
smarty模板数学运算示例
Dec 11 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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
终于听上了直流胆调频
2021/03/02 无线电
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
Python对象转JSON字符串的方法
2016/04/27 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
python十进制转二进制的详解
2020/02/07 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
python自动生成sql语句的脚本
2021/02/24 Python
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
Windows和Linux动态库应用异同
2016/04/17 面试题
酒店应聘自荐信
2013/11/09 职场文书
安全教育心得体会
2013/12/29 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技