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 相关文章推荐
资料注册后发信小技巧
Oct 09 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
Oct 31 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
PHP 魔术变量和魔术函数详解
Feb 25 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
Yii框架表单模型和验证用法
May 20 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
php微信公众号开发之简答题
Oct 20 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
Seajs的学习笔记
2014/03/04 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
Vue实现一个无限加载列表功能
2018/11/13 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
python模块导入的细节详解
2018/12/10 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
保密承诺书范文
2014/03/27 职场文书
运动会开幕词
2015/01/28 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL