php类中self、$this、static用法异同

self

self 是一个指向当前类的静态引用,主要用于访问类的静态方法和属性。它不需要实例化类就可以使用,并且不能用于引用非静态成员。

class TestClass {public static $value = "Hello, world!";public static function sayHello() {echo self::$value;}
}TestClass::sayHello(); // 输出: Hello, world!

$this

$this 是一个指向调用方法的当前对象实例的引用,主要用于访问对象的非静态方法和属性。必须在对象被实例化之后才能使用 $this

class TestClass {public $value = "Hello, world!";public function sayHello() {echo $this->value;}
}$test = new TestClass();
$test->sayHello(); // 输出:Hello, world!

static

static 关键字在“延迟静态绑定”中使用,当子类继承父类并覆盖其方法时,static:: 将解析为最初调用的类。

class ParentClass {public static function whoAmI() {echo "I'm parent class.";}public static function test() {static::whoAmI();}
}class ChildClass extends ParentClass {public static function whoAmI() {echo "I'm child class.";}
}ChildClass::test(); // 输出:I'm child class.

在这个例子中,static::whoAmI() 在父类中被调用,但它实际上输出了子类的消息。这是因为 static 的解析是在运行时进行的,而不是在编译时。

总结

  • self 引用的是定义当前方法的类。
  • $this 引用的是调用当前方法的对象实例。
  • static 在运行时解析,并引用最初调用的类(可能是父类或子类)。

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

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

相关文章

Spring Boot 整合MyBatis-Plus 详解

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 全新的 MyBatis-Plus 3.0 版本基于 JDK8,提供了 lambda 形…

积分球吸收光谱测量的领域有哪些?

积分球吸收光谱测量是一种常用的吸收光谱测量方法,它通过将样品放置在积分球的入口处,球内的光线经过多次反射后形成均匀的照度分布,然后使用光度计或光谱仪对光线进行测量,可以获得样品的相关参数。 在积分球吸收光谱测量中&…

ERROR: Could not find a version that satisfies the requirement torch

在windows 上安装pip install torch torchvision torchaudio 报错: ERROR: Could not find a version that satisfies the requirement torch (from versions: none) ERROR: No matching distribution found for torch 解决办法: 将python版本降到3.11…

十大排序之选择排序(详解)

文章目录 🐒个人主页🏅算法思维框架📖前言: 🎀选择排序 时间复杂度O(n^2)🎇1. 算法步骤思想🎇2.动画实现🎇 3.代码实现 🐒个人主页 🏅算法思维框架 &#x1f…

Qt文件读写详解

Qt 中的文件读写涉及到多个类和概念,以下是一些你需要掌握的关键知识点: 1. 文件路径和文件名: 了解文件路径的表示方式(绝对路径和相对路径),以及文件名的命名规则(特殊字符、长度限制等&…

Java数组的复制、截取(内含例题:力扣-189.轮转数组)

目录 数组的复制、截取: 1、使用Arrays中的copyOf方法完成数组的拷贝 2、使用Arrays中的copyofRange方法完成数组的拷贝 题目链接: 数组的复制、截取: 1、使用Arrays中的copyOf方法完成数组的拷贝 public class Csdn {public static vo…

Edit And Resend测试接口工具(浏览器上的Postman)

优点 可以不用设置Cookie或者Token,只设置参数进行重发接口测试API 使用Microsoft Rdge浏览器 F12——然后点击网络——在页面点击发起请求——然后选择要重发的请求右键选择Edit And Resend——在网络控制台设置自己要设置的参数去测试自己写的功能

JAVA后端开发技术报告

JAVA后端开发技术报告 一、引言 随着互联网技术的不断发展,JAVA作为一门成熟的后端开发语言,应用范围广泛。本报告旨在介绍JAVA后端开发的相关技术,包括JAVA语言基础、Spring框架、数据库技术以及性能优化等方面,帮助开发者更好…

中国吡唑醚菌酯行业市场调研与投资评估报告(2024版)

内容简介: 1993年,巴斯夫公司对醚菌酯分子结构进行了修饰,开发出又一甲氧基丙烯酸酯类杀菌剂——吡唑醚菌酯。2000年,吡唑醚菌酯在英国布赖顿会议上首次公布。2001年上市,目前吡唑醚菌酯现已成为年销售额超过10亿美元…

给element plus中动态form-item增加校验的可行方法

element plus中的form组件自带校验机制。在常规使用场景中&#xff0c;表单项是固定的、明确的&#xff0c;且数量不会太多。校验规则的使用也如下&#xff1a; <template><div class"edit-page"><el-form :model"formModel" ref"for…

如何从IB中下载外汇、数字货币、股票、期货、期权的历史K线数据?

有一个读者咨询问题,想要从IB中获取期权的历史数据,所以这篇文章梳理了一下,如何从Ib上下载外汇、数字货币、股票、期货、期权数据,并给出了具体的代码和配置环境的步骤。 这几个月做高频策略和交易系统,在写代码方面,有一个很深的感悟:把所有的警告当成错误来处理,这样…

GEE:通过将 Landsat 5、7、8、9 的 C02 数据集合并起来,构建 NDVI 长时间序列

作者:CSDN @ _养乐多_ 本文记录了在 Google Earth Engine(GEE)平台上,将 Landsat-5、Landsat-7、Landsat-8 和 Landsat-9 的数据合成为一个影像集合,并生成 NDVI(归一化植被指数)的时间序列的代码。 代码封装成了函数,方便调用,结果如下图所示, 在实际应用中,可能…

基于光纤环形激光器的optisystem仿真及其传感应用

近年来&#xff0c;光纤传感器在航空航天领域&#xff0c;工业制造&#xff0c;医疗等领域引起了越来越多的关注&#xff0c;因为他们体积小&#xff0c;结构简单&#xff0c;灵敏度高&#xff0c;抗电磁干扰强&#xff0c;防腐性能好的特点。各种各样的传感器结构被设计出来&a…

哨兵1号回波数据(L0级)包格式解析与成像参数提取

坑爹的格式,具体有多坑往下看就知道了。matlab代码在文末。 先上首字母缩写: 再来回波数据包的格式图 1. 数据包格式 众所周知,解包的第一步是找帧头和帧长,找到第4~5字节,帧长码为“0x3761”,转十进制为14777,然而实际第一帧整帧的长度是14184。。。你要是加6我还能…

如何打造垂直LLM的护城河

B2B人工智能初创企业的一个伟大策略是打造“垂直人工智能”产品&#xff1a;成为特定行业的人工智能助手&#xff0c;比如律师、金融服务、医生。 听起来很简单&#xff1a;你可以利用LLM的超能力&#xff0c;并将其应用于宠物行业的特定数据和用例。 这就是我们在Explain所做的…

Leetcode—94.二叉树的中序遍历【简单】

2023每日刷题&#xff08;四十&#xff09; Leetcode—94.二叉树的中序遍历 C语言实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ /*** Note: The returned array mus…

【matlab版本的ggplot2】

gramm (complete data visualization toolbox, ggplot2/R-like) 来源&#xff1a;Morel, Pierre. “Gramm: Grammar of Graphics Plotting in Matlab.” The Journal of Open Source Software, vol. 3, no. 23, The Open Journal, Mar. 2018, p. 568, doi:10.21105/joss.00568…

【开源】基于JAVA的森林火灾预警系统

项目编号&#xff1a; S 019 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S019&#xff0c;文末获取源码。} 项目编号&#xff1a;S019&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 系统基础模块2.3 烟…

【Linux】匿名管道与命名管道,进程池的简易实现

文章目录 前言一、匿名管道1.管道原理2.管道的四种情况3.管道的特点 二、命名管道1. 特点2.创建命名管道1.在命令行上2.在程序中 3.一个程序执行打开管道并不会真正打卡 三、进程池简易实现1.makefile2.Task.hpp3.ProcessPool.cpp 前言 一、匿名管道 #include <unistd.h&g…

vivado产生报告阅读分析22

“ Advanced ”选项卡 “ Advanced ” &#xff08; 高级 &#xff09; 选项卡如下图所示。 在“ Advanced ”选项卡中提供了以下字段 &#xff1a; • “ Report ” &#xff08; 报告 &#xff09;&#xff1a; 选中“ Advanced ”选项卡中的“ Cells to Analyze ” &…