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 相关文章推荐
JS实现php的伪分页
May 25 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
Nov 12 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
PHP单例模式详细介绍
Jul 01 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 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
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
PHP7 新增常量
2021/03/09 PHP
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
Python dict的常用方法示例代码
2020/06/23 Python
python用700行代码实现http客户端
2021/01/14 Python
Python实现简单的2048小游戏
2021/03/01 Python
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
.net软件工程师面试题
2015/03/31 面试题
打架检讨书100字
2014/01/08 职场文书
火车来了教学反思
2014/02/11 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
2014年营业员工作总结
2014/11/18 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS