目录
new static() 和 new self() 的区别异同,staticself
C++ new与new[]的不同?
JAVA中 static A a=new A() 这static 有什用?具体点
首页 后端开发 php教程 new static() 和 new self() 的区别异同,staticself_PHP教程

new static() 和 new self() 的区别异同,staticself_PHP教程

Jul 13, 2016 am 10:20 AM
new self static 区别 异同

new static() 和 new self() 的区别异同,staticself

长夜漫漫啊!

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

改着改着发现了一个地方

<span>return</span> <span>new</span> <span>static</span>(<span>$val</span>);
登录后复制

这尼玛是神马,只见过

<span>return</span> <span>new</span> self(<span>$val</span>);
登录后复制

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

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 <span><span>get_called_class()</span></span> ).

<span>class</span><span> A {
    </span><span>public</span> <span>static</span> <span>function</span><span> get_self() {
        </span><span>return</span> <span>new</span><span> self();
    }

    </span><span>public</span> <span>static</span> <span>function</span><span> get_static() {
        </span><span>return</span> <span>new</span> <span>static</span><span>();
    }
}

</span><span>class</span> B <span>extends</span><span> A {}

</span><span>echo</span> <span>get_class</span>(B::get_self());  <span>//</span><span> A</span>
<span>echo</span> <span>get_class</span>(B::get_static()); <span>//</span><span> B</span>
<span>echo</span> <span>get_class</span>(A::get_static()); <span>//</span><span> A</span>
登录后复制

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

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

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

<span>class</span><span> A {
    </span><span>public</span> <span>function</span><span> create1() {
        </span><span>$class</span> = <span>get_class</span>(<span>$this</span><span>);<br /></span><span>    return</span> <span>new</span> <span>$class</span><span>();
    }
    </span><span>public</span> <span>function</span><span> create2() {
        </span><span>return</span> <span>new</span> <span>static</span><span>();
    }
}

</span><span>class</span> B <span>extends</span><span> A {

}

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

</span><span>/*</span><span>
The result 
string(1) "B"
string(1) "B"
</span><span>*/</span>
登录后复制

 

C++ new与new[]的不同?

东西多了点。呵呵。帮你详细说一下。
1. new和new[]的区别
new 用于单个对象或实例的创建,就是调用类的构造函数。
new [] 用于创建对象或实例的数组实例,并且地址是连续的。(内存分配的时候有可能不连续,但地址链表是连续的。)
2. 虚函数(这个没办法说,只能举例子)
class person
{
public :
virtual say();
}
class techer : public person
{
public :
protected override say();
}
class student : public person
{
public :
protected override say();
}
第三个没理解什么意思。
前面两个不知道你看懂没有。没有的话联系我。
 

JAVA中 static A a=new A() 这static 有什用?具体点

在java中
public static void main(String args[])这句话是一个主方法,
java程序可以有多个方法,但是主方法只能有一个,
用ststic修饰的方法称为类方法(main也是类方法)。
A a=new A()是创建一个实例对象 static 起的是修饰作用
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/867540.htmlTechArticlenew static() 和 new self() 的区别异同,staticself 长夜漫漫啊! 今天领导本地搭建一个站。发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 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)

deepseek r1版本和v3版本有什么区别 deepseek r1版本和v3版本有什么区别 Feb 19, 2025 pm 03:24 PM

DeepSeek:R1与V3版本深度对比,助您选择最佳AI助手!DeepSeek已拥有千万用户,其AI对话功能备受好评。但面对R1和V3两个版本,您是否感到困惑?本文将详细解读两者的差异,帮助您选择最合适的版本。DeepSeekR1与V3版本核心区别:特性R1版本V3版本设计目标专注复杂问题推理,深度逻辑分析多功能大型语言模型,注重扩展性和效率架构与参数强化学习优化架构,参数规模15亿-700亿MoE混合专家架构,总参数高达6710亿,每个token激活370亿

DeepSeek使用常见问题汇总 DeepSeek使用常见问题汇总 Feb 19, 2025 pm 03:45 PM

DeepSeekAI工具使用指南及常见问题解答DeepSeek是一款功能强大的AI智能工具,本文将解答一些常见的使用问题,助您快速上手。常见问题解答:不同访问方式的区别:网页版、App版和API调用在功能上没有区别,App只是网页版的封装。本地部署使用的是蒸馏模型,能力略逊于完整版DeepSeek-R1,但32位模型理论上拥有90%的完整版能力。酒馆(SillyTavern)是什么?SillyTavern是一个前端界面,需要通过API或Ollama调用AI模型。破限是什么

比特币有没有股票?比特币有股权吗? 比特币有没有股票?比特币有股权吗? Mar 03, 2025 pm 06:42 PM

加密货币市场蓬勃发展,比特币作为领军者,吸引了众多投资者的目光。许多人好奇:比特币有股票吗?答案是否定的。比特币本身并非股票,但投资者可以通过多种途径间接投资比特币相关资产,本文将详细解读。比特币投资的替代方案:与其直接投资比特币,投资者可以通过以下方式参与比特币市场:比特币ETF:这是在股票交易市场上交易的基金,其资产组合包含比特币或比特币期货合约。对于习惯股票投资的投资者来说,这是一个相对便捷的选择,无需直接持有比特币。比特币矿业公司股票:这些公司的业务是比特币挖矿并持有比特币

盘前盘后交易有什么区别?盘前盘后交易区别详解 盘前盘后交易有什么区别?盘前盘后交易区别详解 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月下旬,韩国比特币价格一度

佩佩大举买入并抛售,MUTM 是 2025 年更明智的投资吗? 佩佩大举买入并抛售,MUTM 是 2025 年更明智的投资吗? Mar 03, 2025 pm 07:09 PM

PEPE的暴涨暴跌之后,MUTM能否成为2025年更稳健的投资选择?PEPE(PEPE)令早期投资者赚得盆满钵满,但其剧烈价格波动也让许多人对其长期前景产生质疑。在模因币市场持续动荡之际,交易者们开始关注更具基本面优势的项目,MutuumFinance(MUTM)就是其中之一。这是一个专注于实际金融应用的去中心化借贷平台。不同于依靠投机炒作的PEPE,MUTM构建了一个结构化的DeFi生态系统,用户可在其中进行借贷并获得被动收入。其预售已突破百万美元,第一阶段代币销售率超过97%,早期投资

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

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

See all articles