0

0

php中static静态类与静态变量用法实例对比分析

伊谢尔伦

伊谢尔伦

发布时间:2017-06-30 11:07:02

|

1579人浏览过

|

来源于php中文网

原创

这篇文章主要介绍了php中静态类与静态变量用法的区别,以实例形式较为详细的分析了php中静态类与静态变量的定义、功能及使用技巧,需要的朋友可以参考下

本文实例分析了php中静态类与静态变量用法的区别。分享给大家供大家参考。具体分析如下:

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

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

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

立即学习PHP免费学习笔记(深入)”;

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

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

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

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

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

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

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

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

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

Buildt.ai
Buildt.ai

AI驱动的软件开发平台,可以自动生成代码片段、代码分析及其他自动化任务

下载

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

例子,代码如下:

"; 
    } 
} 
class Student extends Person { 
    function study() { 
        echo "我是". parent::$country."人
"; } } // 输出成员属性值 echo Person::$country."
"; // 输出:中国 $p1 = new Person(); //echo $p1->country; // 错误写法 // 访问静态成员方法 Person::myCountry(); // 输出:我是中国人 // 静态方法也可通过对象访问: $p1->myCountry(); // 子类中输出成员属性值 echo Student::$country."
"; // 输出:中国 $t1 = new Student(); $t1->study(); // 输出:我是中国人 ?>


运行该例子,输出:
中国
我是中国人
我是中国人
中国
我是中国人

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

slef:: $country
slef:: myCountry()

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

parent:: $country
parent:: myCountry()

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

Person::$country
Person::myCountry()
Student::$country

但静态方法也可以通过普通对象的方式访问.
例子,声明静态变量,代码如下:

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


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

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

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

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

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
javascript void运算符
javascript void运算符

void是一元运算符,执行右侧表达式但始终返回undefined;用于丢弃返回值、阻止a标签跳转、IIFE忽略结果、动态导入不取Promise、安全获取undefined。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.29

vscode的界面字体大小调整
vscode的界面字体大小调整

调整VSCode界面字体大小可通过设置编辑器或整体UI缩放实现;2.修改"Editor:FontSize"改变代码字体;3.设置"Window:ZoomLevel"调整整体界面字体;4.使用Ctrl+滚轮快捷键临时缩放。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.29

VSCode的注释快捷键
VSCode的注释快捷键

单行注释快捷键为Ctrl+/(Windows/Linux)或Cmd+/(macOS),块注释使用Shift+Alt+A(Windows/Linux)或Shift+Option+A(macOS),VSCode会根据语言类型自动匹配语法,如JavaScript用//,Python用#,C++用//,若快捷键无效需检查语言扩展或插件冲突。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.29

Golang 命令行工具(CLI)开发实战
Golang 命令行工具(CLI)开发实战

本专题系统讲解 Golang 在命令行工具(CLI)开发中的实战应用,内容涵盖参数解析、子命令设计、配置文件读取、日志输出、错误处理、跨平台编译以及常用CLI库(如 Cobra、Viper)的使用方法。通过完整案例,帮助学习者掌握 使用 Go 构建专业级命令行工具与开发辅助程序的能力。

4

2025.12.29

ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

165

2025.12.26

压缩文件加密教程汇总
压缩文件加密教程汇总

本专题整合了压缩文件加密教程,阅读专题下面的文章了解更多详细教程。

56

2025.12.26

wifi无ip分配
wifi无ip分配

本专题整合了wifi无ip分配相关教程,阅读专题下面的文章了解更多详细教程。

108

2025.12.26

漫蛙漫画入口网址
漫蛙漫画入口网址

本专题整合了漫蛙入口网址大全,阅读下面的文章领取更多入口。

356

2025.12.26

b站看视频入口合集
b站看视频入口合集

本专题整合了b站哔哩哔哩相关入口合集,阅读下面的文章查看更多入口。

703

2025.12.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号