php中static和const关键字用法分析


Posted in PHP onDecember 07, 2016

本文实例讲述了php中static和const关键字用法。分享给大家供大家参考,具体如下:

static关键字在类中描述的成员属性和成员函数都是静态的。

static成员能限制外部的访问,因为static成员是属于类的,而不是属于任何对象实例。

从内存的角度讲,其中对象是放在“堆内存”中,对象的引用是放在“栈内存”中,而静态成员被放在初始化静态段中,在类的第一次加载的时候加入的。可以让对内存中的所有对象所共享。如下图所示:

php中static和const关键字用法分析

<?php
class Person{
 public static $myCountry = "中国";
 public static function say(){
  echo "我的祖国是:".self::$myCountry."<br>";
 }
}
//输出静态属性
echo Person::$myCountry."<br>";
//调用静态方法
Person::say();
//修改静态属性
Person::$myCountry = "中国-江苏";
echo Person::$myCountry."<br>";
?>

输出结果为:

中国
我的祖国是:中国
中国-江苏

类中的静态方法只能访问类的静态的属性。类中的静态的方法是不能访问类的非静态的成员的。我们用self来访问类中的静态属性。self与this相似,只不过self代表静态方法所在的类,this相似,只不过self代表静态方法所在的类,this引用指针,代表调用此方法的对象。静态方法是不用对象调用的,所有就没有this这个引用了。没有this这个引用了。没有this,就没办法调用类中的其他的成员属性。

const是一个定义常量的关键字。在类里面常用const来定义常量。用“const”修饰的成员属性的访问方式和“static”修饰的成员访问的方式差不多,也是使用“类名”,在方法里面使用“self”关键字。但是不用使用“$”符号,也不能使用对象来访问。

<?php
class MyClass{
 const constant = 'constant value';
 function showConstant(){
  //方法中调用常量,没有$
  echo self::constant."<br>";
 }
}
//类直接调用,没有$
echo MyClass::constant."<br>";
$class = new MyClass();
$class ->showConstant();
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
PHP新手上路(六)
Oct 09 PHP
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
codeigniter实现get分页的方法
Jul 10 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 PHP
php时间戳转换代码详解
Aug 04 PHP
php提高脚本性能的4个技巧
Aug 18 PHP
php抽象方法和抽象类实例分析
Dec 07 #PHP
php接口技术实例详解
Dec 07 #PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 #PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 #PHP
php自定义时间转换函数示例
Dec 07 #PHP
php微信公众平台开发(四)回复功能开发
Dec 06 #PHP
php微信公众平台开发(三)订阅事件处理
Dec 06 #PHP
You might like
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
如何编写jquery插件
2017/03/29 jQuery
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
教你安装python Django(图文)
2013/11/04 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
Servlet的生命周期
2013/08/25 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
保险公司年会主持词
2014/03/22 职场文书
党员年终个人总结
2015/02/14 职场文书
通知函格式范文
2015/04/27 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
2016年父亲节寄语
2015/12/04 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
python的变量和简单数字类型详解
2021/09/15 Python