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 相关文章推荐
动易数据转成dedecms的php程序
Apr 07 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP的mysqli_ssl_set()函数讲解
Jan 23 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
php中try catch捕获异常实例详解
Aug 06 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
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
javascript抽象工厂模式详细说明
2014/12/16 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
Python爬虫代理IP池实现方法
2017/01/05 Python
django中send_mail功能实现详解
2018/02/06 Python
如何通过python画loss曲线的方法
2019/06/26 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
用python实现学生管理系统
2020/07/24 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
python 19个值得学习的编程技巧
2020/08/15 Python
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
市场营销职业生涯规划书范文
2014/01/12 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
道歉信范文
2015/05/12 职场文书