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 排序点,matlab如何进行排序?

来自SORT的MATLAB文档&#xff1a;If A has complex entries r and s,sort orders them according to thefollowing rule: r appears before s insort(A) if either of the followinghold:abs(r) < abs(s)abs(r) abs(s) and angle(r) < angle(s)换言之&#xff0c;具有复…

matlab不同调制方式下性能比较,用不同调制方式实现跳/扩频混合通信的抗干扰性能...

论文写作指导&#xff1a;请加QQ229366758摘要&#xff1a;介绍了BPSK&#xff0c;QPSK&#xff0c;16PSK&#xff0c;FSK&#xff0c;MSK及GMSK 6种数字调制方式的特点&#xff0c;采用Matlab中的Simulink建立了各种调制方式实现DS/FH混合扩频系统的仿真模型。重点研究了跳/扩…

matlab cd参数,MATLAB变量参数列表​

默认值default value对于用户没有传递参数值时给函数进行自动赋给该参数的值​比如上述的例子中&#xff0c;阻尼系数&#xff0c;用户通常不清楚&#xff0c;可以由系统给出更为合适。怎么做到呢&#xff1f;​可以结合MATLAB的一个函数nargin&#xff0c;它能给出函数输入参数…

java 旋转方向,Java 2d方向鼠标点旋转

使用Graphics2D旋转方法确实是最简单的方法.这是一个简单的实现&#xff1a;int centerX width / 2;int centerY height / 2;double angle Math.atan2(centerY - mouseY, centerX - mouseX) - Math.PI / 2;((Graphics2D)g).rotate(angle, centerX, centerY);g.fillRect(...)…

基于matlab 的燃油喷雾图像处理方法,基于MATLAB的燃油喷雾图像处理方法.doc

基于MATLAB的燃油喷雾图像处理方法基于MATLAB的燃油喷雾图像处理方法摘要:提出了基于MATLAB的燃油喷雾图像处理方法。通过对喷雾图像的采集, 分割和滤波处理, 将多幅图像转换融合为一幅比较清楚的二值图像, 对拍摄的喷雾图像进行了去噪及二值化等初步处理, 并提取其轮廓图, 求取…

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

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

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

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

毕业设计matlab在误差处理中的应用,毕业设计MATLAB在误差处理中的应用要点分析.doc...

毕业论文任务书院(系) 机械工程学院 专业班级 测控082级 学生姓名 马 魁一、毕业论文题目 MATLAB在误差理论中的应用二、毕业论文工作自______ ___年____ _月___ __日 起至____ _____年 月_____日止三、毕业论文进行地点: 陕西理工学院四、毕业论文内容要求&#xff1a;传统的数…

帝国cms 未审核 showinfo.php,帝国CMS批量修改文章未审核状态及批量修改上线时间...

帝国CMS批量修改审核文章未审核状态&#xff0c;批量自定义指定文件上线时间&#xff01;用法&#xff1a;后台增加自定义页面 PHP CODE:$infouptimeto_time(2016-06-12 10:50:19); //上线时间$sql$empire->query("select * from {$dbtbpre}ecms_".$class_r[2][…

php 完美防sql注入,PHP 完美的防XSS 防SQL注入的代码

PHP "完美"的防XSS 防SQL注入的代码function gjj($str){$farr array("/s/","/]*?)>/isU","/(]*)on[a-zA-Z]s*([^>]*>)/isU",);$str preg_replace($farr,"",$str);return addslashes($str);}function hg_input_b…

oracle 并行执行 杀掉会话,oracle – 为什么即使我禁用并行DML和并行DDL也会创建并行会话...

READ和WRITE并行性并不总是捆绑在一起.alter session disable parallel dml;仅禁用语句的WRITE部分的并行性. READ部分可能仍然并行运行.由于这是MERGE操作,因此并行提示请求读写并行写入.此外,并行提示覆盖alter session disable parallel query;,即使它不覆盖alter session d…

oracle临时表空间占用率过高,ORACLE 临时表空间使用率过高的原因及临时解决方案...

数据库temp临时表空间增大&#xff0c;一般在数据安装时设置临时表空间大小&#xff0c;默认的情况下都是设置为自动增长。这样会引起一个问题&#xff1a;在数据库使用中temp表空间会自动扩展的越来越大&#xff0c;造成磁盘空间使用不足。引起临时表空间增大主要使用在以下几…

oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接

()相当于()。在Oracle中&#xff0c;()表示JOIN中的“可选”表。 所以在你的第一个查询中&#xff0c;它是一个().在你的第二个查询中&#xff0c;它是()。它们在功能上是等价的。在术语中&#xff0c;RIGHT或LEFT指定连接的哪一侧始终具有记录&#xff0c;而另一侧可能为空。 …

oracle中order by 2,关于oracle中ROWNUM和ORDER BY的问题(2)

SQL code16:29:53 scottTUNGKONG> SELECT a.*,rownum FROM (SELECT good_id, good_nm, prc FROM tb_ag001 ORDER BY prc) a;GOOD_I GOOD_NM PRC ROWNUM------ ------------------------------ ---------- ----------133337 阳光宝贝防晒修复套SPF-30 0 1133424 旋覆透白绣花…

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

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

php null截断 漏洞,CVE-2015-3412,CNNVD-201507-164|PHP NULL Character 安全漏洞 - 信息安全漏洞门户 VULHUB...

PHP(PHP&#xff1a;Hypertext Preprocessor&#xff0c;PHP&#xff1a;超文本预处理器)是PHP Group和开放源代码社区共同维护的一种开源的通用计算机脚本语言。该语言主要用于Web开发&#xff0c;支持多种数据库及操作系统。 PHP中存在安全漏洞&#xff0c;该漏洞源于程序没有…

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

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

shell从oracle中获取变量,shell 如何读取环境变量的值

笔者最近在开发中遇到新旧版本不兼容的问题&#xff0c;需要我解析的内容更新到最新后对于旧的日志将不支持&#xff0c;所以我需要设置开关来区分是用新的脚本还是原来旧的脚本&#xff1b;这样我就遇到了比较基础的问题&#xff0c;那就是在shell脚本中如何读取环境变量并使用…

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

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

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

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