php在类定义一个我静态变量,php中静态类与静态变量用法的区别分析_PHP教程

php中静态类与静态变量用法的区别分析

static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了.

1. 创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问.

2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以,但是有前提条件.

A. 如果是变量,需要该变量可访问.

B. 如果是方法,除了该方法可访问外,还需要满足.

① 如果是静态方法,没有特殊条件.

② 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题.

然后我们再看一下使用$object->… 和使用class::… 都有什么区别:

1. 使用$object->… ,需要执行构造函数创建对象.

2. 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象.

3. 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象.

然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?

静态static:声明类成员或方法为 static,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外),静态成员属于类,不属于任何对象实例,但类的对象实例都能共享.

例子,代码如下:

代码如下:

运行该例子,输出:

中国

我是中国人

我是中国人

中国

我是中国人

小结:在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),代码如下:

代码如下:

slef:: $country

slef:: myCountry()

在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),代码如下:

代码如下:

parent:: $country

parent:: myCountry()

外部访问静态成员属性和方法为 类名/子类名::,代码如下:

代码如下:

Person::$country

Person::myCountry()

Student::$country

但静态方法也可以通过普通对象的方式访问.

例子,声明静态变量,代码如下:

代码如下:

例子,使用静态变量的例子,代码如下:

代码如下:

现在,每次调用 Test() 函数都会输出 $w3sky 的值并加一.

静态变量也提供了一种处理递归函数的方法,递归函数是一种调用自己的函数,写递归函数时要小心,因为可能会无穷递归下去,必须确保有充分的方法来中止递归,一下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止.

例子,静态变量与递归函数,代码如下:

代码如下:

注:静态变量可以按照上面的例子声明,如果在声明中用表达式的结果对其赋值会导致解析错误.

http://www.bkjia.com/PHPjc/944486.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/944486.htmlTechArticlephp中静态类与静态变量用法的区别分析 static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相...

相关文章

相关视频

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

47d507a036d4dd65488c445c0974b649.png

立即提交

专题推荐064df72cb40df78e80e61b7041ee044f.png独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

7dafe36c040e31d783922649aefe0be1.png玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

04246fdfe8958426b043c89ded0857f1.png天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

php中文网:公益在线php培训,帮助PHP学习者快速成长!

Copyright 2014-2020 https://www.php.cn/ All Rights Reserved | 苏ICP备2020058653号-1e6cebb680dfe320dad7e62bd6442c3a6.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab声音信号时域频域转换,关于处理用采集卡采集到的声音时域信号转化成频域信号........

求助各位大神,我用麦克风通过采集卡采集到了一段声音数据,数据在附件里,矩阵中第一列为时间,第二列为采集到的声音的电压信号,采样频率为1万Hz,做出时域图和频域图的程序如下所示:clear;clc;loa…

win7和mysql乱码,windows本地mysql数据库存入中文乱码

windows本地mysql数据库存入中文乱码作者:PHPYuan 时间:2018-07-23 03:41:20出现的问题: 我这页面存中文到数据库会乱码 我打了断点 中文是传到后台dao层的 然后我试了下 把我本地项目连服务器数据库 保存不会乱码 我就怀疑是本地数据库有问题 然后我用navicat写了个…

oracle 600 侯,oracle在导入数据时报600错误的解决方法

前言前几天导入一个大容量dmp数据文件,报一个600错误,咨询网上的解决方法,按上面的处理一圈也没有整好,最后咨询组里一个大神,出现此错误 思路是,单个数据文件大小最大为32G,分析数据库后解决如…

Oracle插数据timeout,oracle 11g 频繁报kmgs_parameter_update_timeout

各位 好!我的数据库RAC 11g 最近频繁报错,数据库版本是11.2.0.1.0 详细错误信息如下:Errors in file /u01/app/oracle/diag/rdbms/glddb/glddb1/trace/glddb1_mmon_27429.trc (incident123874):ORA-00600: internal error code, arguments: …

linux touch更新文件时间,Linux文件时间的查看和修改touch

1. Linux文件的时间Linux下文件时间主要有下面三种:1.1 modification time(mtime)文件修改时间,即文件内容的修改时,更新这个时间,不包括文件权限和属性的修改。使用ls -l查看,默认显示时间为mtime$ ls -l uconv.h-rw-…

linux中ftp禁止匿名,linux下禁止root和匿名用户登录ftp

1、ftp通过root或其他用户进入可视化界面权限过大,容易导致系统文件误删windows下输入ftp://IP去访问,不需要账号密码就可以访问到ftp文件夹刚进去pub是空的,在linux上新增一个txt文件,再去windows下刷新可以看到txt文件&#xff…

mats显存测试软件linux环境,Mats显存检测软件下载-Mats显存检测软件最新版下载-微侠手游网...

Mats显存检测软件是一款专业的显卡检测工具,全系统都是中文的,是一款装机必备的硬件工具,帮助你了解自己的显卡运作情况,有任何问题都可以第一时间暂停,看完的小伙伴可以关注微侠网下载最新版软件以及查看最新攻略及资…

c语言编程函数补充上机题,2011年计算机二级C语言上机操作题及答案(10)

/********found********/void fun(char *s, *t1, *t2, *w){int i;char *p, *r, *a;strcpy(w, s);while (*w){p w;r t1;/********found********/while (r)if (*r *p){r;p;}else{break;}if (*r ’\0’){a w;r t2;while (*r){*a *r;a;r;}w strlen(t2);}else{w;}}}main(…

c语言 手机图形库,c语言的图形库 - osc_opiar5rp的个人空间 - OSCHINA - 中文开源技术交流社区...

图形库链接http://www.easyx.cn/ 使用图形库头文件easyx.h或graphics.h同样在里面下载图形库帮助文档进行查询vs vc都可使用图形库图形库窗口:initgraph打开窗口closegraph关闭窗口颜色RGB值 RGB(,,):red green blue 下表值都可以在函数中直接使用填充颜…

android 自动挂断,[转]android 来电自动接听和自动挂断

注意:android2.3版本不支持下面的自动接听方法。(会抛异常:java.lang.SecurityException:Neither user xxxxx nor current process hasandroid.permission.MODIFY_PHONE_STATE.)第一步:准备应用环境需要的系统包和aidl文件。(1)在应用中创建包…

Android实现mp3分析,Android编程实现播放MP3功能示例

本文实例讲述了Android编程实现播放MP3功能。分享给大家供大家参考,具体如下:在android中播放mp3非常简单,也是项目中经常使用的,比如说要做项目的背景音乐,应用中某些功能的提示音等的。应用非常广泛,下面提供一个简单…

android 投票功能,腾讯新闻Android客户端更新 加入投票功能

腾讯近日更新了其应用《腾讯新闻》安卓版,加入了新闻专题,投票两大新功能,同事还优化了用户界面,大家在浏览各类新闻方面又有了新的选择。新版特点:1、新闻专题:热门新闻专题呈现,聚合浏览&…

android8.1自定义通知栏,Android 8.1隐藏状态栏图标的实例代码

近期客户需求,状态栏只显示时间和电池图标,如图状态栏图标的布局文件在frameworks\base\packages\SystemUI\res\layout\status_bar.xml,主要包括通知,定位,蓝牙,信号,时间,电池等图标&#xff0…

广州城市地图为android,广州无障碍地图

广州无障碍地图是一款非常不错的手机导航app,专门为老人与残障人士打造的哦。该app将准确的为残障用户规划出一条没有任何障碍的出行路线,并且该软件拥有语音、文字等不同的播报方式。特色说明1、智能化的手机导航的系统,语音识别2、最为准确…

华为副总鸿蒙,“哄蒙”败北!华为副总裁落实最新消息,鸿蒙3月31日正式亮剑...

原标题:“哄蒙”败北!华为副总裁落实最新消息,鸿蒙3月31日正式亮剑不得不说,最近的华为生态建设又取得了重大的突破。在2020年不到一年的时间里,华为HMS生态注册开发者的数量就已经快要突破200万了,如此庞大…

html淡化效果,jQuery实现基本淡入淡出效果的方法详解

本文实例讲述了jQuery实现基本淡入淡出效果的方法。分享给大家供大家参考,具体如下:jQuery fadeIn()方法:用于淡入已隐藏的元素jQuery fadeOut()方法:用于淡出可见的元素$(document).ready(function(){$("button").clic…

html 类型转换,JavaScript怎么进行类型转换?

JavaScript怎么进行类型转换?下面本篇文章就来介绍一下使用javascript进行类型转换的方法,希望对大家有所帮助。JavaScript 变量可以转换为新变量或其他数据类型,分为两种情况:● 隐性转换:通过 JavaScript 自身自动转…

html中购物车总金怎么算额,计算购物车金额总和( jquery )

今天简单写了一个jq版购物车计算金额总和的例子,如图:整体页面代码如下:*{list-style: none;}html,body{margin: 0;padding: 0;}.all-list{padding: 40px;margin: 0 auto;}.choose-list{overflow: hidden;}.choose-list >h5{display: bloc…

ios html5上架,iOS原生集成H5+详细流程

iOS原生集成H5集成方式独立应用方式集成Widget方式集成WebView方式集成可以打开官方链接: 选择 5SDK -> 5SDK集成 -> 平台 下查看集成方式独立应用方式: 官方Demo中的实现, 独立的App, 感觉上和直接在HBuilder创建App相同, 可以方便证书导入这些步骤吧Widget方式: 模块部…

微型计算机中celeron,微型计算机中常提及的Pentium或Celeron是指其_______

摘要:旋律的起伏,微型心灵感受体和密节奏用机的疏,心两训练入手同时从身方面。细分还可统模、常提讨模式启发为传论模式、式,学生智力模式教学要目一种为主的的发展是以。微型重要组成教育部分)的实习是(。...旋律的起伏&#xff…