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出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
使用PHP Socket写的POP3类
Oct 30 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
PHP实现懒加载的方法
Mar 07 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 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的控制语句
2006/10/09 PHP
PHP页面中文乱码分析
2013/10/29 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
js单线程的本质 Event Loop解析
2019/10/29 Javascript
python读取Android permission文件
2013/11/01 Python
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
Python实现处理管道的方法
2015/06/04 Python
Python 的内置字符串方法小结
2016/03/15 Python
python3 shelve模块的详解
2017/07/08 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
python简单实例训练(21~30)
2017/11/15 Python
python实现textrank关键词提取
2018/06/22 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
基层党支部公开承诺书
2014/05/29 职场文书
高中班级口号
2014/06/09 职场文书
鼋头渚导游词
2015/02/05 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby