首页 php教程 php手册 PHP中new static() 和 new self() 的区别介绍

PHP中new static() 和 new self() 的区别介绍

Jun 06, 2016 pm 08:14 PM
new php 区别

这篇文章主要介绍了PHP中new static() 和 new self() 的区别介绍,需要的朋友可以参考下

长夜漫漫啊!

今天领导本地搭建一个站。发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,领导让苦逼我更改在5.2下能运行。

改着改着发现了一个地方

复制代码 代码如下:


return new static($val);


这尼玛是神马,只见过

复制代码 代码如下:


return new self($val);


于是上网查了下,他们两个的区别。

self – 就是这个类,是代码段里面的这个类。

static – PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。

还是看看老外的专业解释吧。

self refers to the same class whose method the new operation takes place in.

static in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.

In the following example, B inherits both methods from A. self is bound to A because it's defined in A‘s implementation of the first method, whereas static is bound to the called class (also see  get_called_class() ).

复制代码 代码如下:


class A {
    public static function get_self() {
        return new self();
    }

    public static function get_static() {
        return new static();
    }
}

class B extends A {}

echo get_class(B::get_self());  // A
echo get_class(B::get_static()); // B
echo get_class(A::get_static()); // A


这个例子基本上一看就懂了吧。

原理了解了,但是问题还没有解决,,如何解决掉 return new static($val); 这个问题呢?

其实也简单就是用 get_class($this); 如下

复制代码 代码如下:


class A {
    public function create1() {
        $class = get_class($this);
    return new $class();
    }
    public function create2() {
        return new static();
    }
}

class B extends A {

}

$b = new B();
var_dump(get_class($b->create1()), get_class($b->create2()));

/*
The result
string(1) "B"
string(1) "B"
*/

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
两个点博物馆:所有展览以及在哪里可以找到它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

盘前盘后交易有什么区别?盘前盘后交易区别详解 盘前盘后交易有什么区别?盘前盘后交易区别详解 Mar 03, 2025 pm 11:54 PM

传统金融市场中,盘前盘后交易指常规交易时段以外的交易活动。虽然加密货币市场全天候交易,但像Bitget等交易平台也提供类似功能,尤其是一些同时交易股票和加密货币的综合平台。本文将阐明盘前盘后交易的差异,并探讨其对币价的影响。盘前盘后交易的四大区别:盘前盘后交易与常规交易时段的主要区别在于交易时间、流动性、价格波动和交易量四个方面:交易时间:盘前交易发生在正式交易开始前,盘后交易则在常规交易结束后进行。流动性:盘前盘后交易流动性较低,交易者稀少,买卖价差较大;而常规交易时段流动性高,价

为什么说Bittensor是AI赛道的'比特币”? 为什么说Bittensor是AI赛道的'比特币”? Mar 04, 2025 pm 04:06 PM

原文标题:Bittensor=AIBitcoin?原文作者:S4mmyEth,DecentralizedAIResearch原文编译:zhouzhou,BlockBeats编者按:本文讨论了Bittensor,一个去中心化的AI平台,希望通过区块链技术打破集中式AI公司的垄断,推动开放、协作的AI生态系统。Bittensor采用子网模型,允许不同AI解决方案的出现,并通过TAO代币激励创新。尽管AI市场已成熟,但Bittensor面临竞争风险,可能会受到其他开源

韩国比特币和国内比特币有什么不同吗? 韩国比特币和国内比特币有什么不同吗? Mar 05, 2025 pm 06:51 PM

比特币投资热潮持续升温,比特币作为全球首个去中心化数字资产,其去中心化和全球流通性等特性备受关注。尽管中国曾是比特币最大市场,但政策影响导致交易受限。而如今,韩国成为全球主要比特币市场之一,引发投资者对其与国内比特币差异的疑问。本文将深入分析两国比特币市场的区别。韩、中比特币市场差异解析韩国与中国比特币市场的主要区别体现在价格、市场供需、汇率、法规监管、市场流动性和交易平台等方面:价格差异:韩国比特币价格通常高于中国,这种现象被称为“泡菜溢价”。例如,2024年10月下旬,韩国比特币价格一度

垂直代理:加密原生代理的应用场景和颠覆性潜力解读 垂直代理:加密原生代理的应用场景和颠覆性潜力解读 Mar 04, 2025 am 10:21 AM

人工智能代理(AIAgents)正迅速融入企业日常运营,从大型公司到小型企业,几乎所有领域都已开始应用,包括销售、营销、财务、法律、IT、项目管理、物流、客户服务和工作流自动化等。我们正从人工处理数据、执行重复性任务和使用Excel表格的时代,转变为由AI代理全天候自主运行的时代,这不仅提高了效率,还显着降低了成本。 Web2中AI代理的应用案例:YCombinator的视角Apten:一款结合AI和短信技术的销售与营销优化工具。 BildAI:一款能够读取建筑蓝图,提

Nexo是什么交易所?Nexo交易所安全吗? Nexo是什么交易所?Nexo交易所安全吗? Mar 05, 2025 pm 07:39 PM

Nexo:不止是加密货币交易所,更是您的数字金融管家Nexo并非传统的加密货币交易所,而是更侧重于加密货币借贷的金融平台。它允许用户以加密货币为抵押获得贷款,并提供赚取利息的服务。虽然Nexo也提供加密货币买卖和兑换功能,但其核心业务是加密借贷。本文将深入探讨Nexo的运作模式及安全性,为投资者提供更全面的了解。Nexo的运作模式成立于2018年,总部位于瑞士楚格的Nexo,是数字金融领域的先驱。它区别于其他中心化交易所,更专注于提供全面的金融服务。用户无需出售资产即可进行加密货币的买卖、交易和

以太币和比特币的区别 以太币和比特币区别是什么 以太币和比特币的区别 以太币和比特币区别是什么 Mar 19, 2025 pm 04:54 PM

以太币与比特币区别显着。技术上,比特币用 PoW,以太币从 PoW 转向 PoS 。交易速度比特币慢,以太币快。应用场景里,比特币侧重支付存储,以太币支撑智能合约与 DApp 。发行上,比特币总量 2100 万枚,以太币无固定总量。安全方面各有挑战。市场价值上,比特币市值居首,两者价格波动都大,但因特性不同,以太币价格走势有独特之处 。

虚拟货币平仓是什么意思?和卖出一样吗?如何避免强制平仓? 虚拟货币平仓是什么意思?和卖出一样吗?如何避免强制平仓? Mar 04, 2025 am 06:51 AM

虚拟货币交易中的平仓详解:规避爆仓风险的策略本文将深入探讨虚拟货币市场中的“平仓”概念,并阐明其与“卖出”的区别,以及如何有效规避强制平仓(爆仓)风险。什么是虚拟货币平仓?平仓是指投资者通过反向交易来结束现有仓位,从而锁定盈亏。例如,持有多头仓位(买入)的投资者,可以通过卖出等量虚拟货币来平仓;持有空头仓位(卖出)的投资者,则需买入等量虚拟货币平仓。平仓操作本质上是关闭或解除已建立的投资头寸。平仓等于卖出吗?虽然多头平仓确实涉及卖出操作,但平仓与卖出并非完全等同。平仓定义:结束已开

币本位2倍相当于U本位多少倍?U本位和币本位有什么区别? 币本位2倍相当于U本位多少倍?U本位和币本位有什么区别? Mar 04, 2025 am 07:48 AM

币本位与U本位永续合约:杠杆倍数的换算与风险分析永续合约的计价方式主要分为币本位和U本位两种。币本位合约以交易的加密货币(如BTC、ETH)结算,目标是获取更多该加密货币;U本位合约则以稳定币(如USDT)结算,目标是赚取更多稳定币,类似于传统的金本位制度。许多投资者好奇:币本位2倍杠杆相当于U本位多少倍?币本位2倍杠杆与U本位杠杆的换算简单来说,币本位2倍杠杆大致相当于U本位2倍杠杆。然而,这种等价关系并非绝对,因为币种价格波动会显着影响实际杠杆效果。币本位杠杆的风险会随着币种价格波

See all articles