PHP中new static() 和 new self() 的区别介绍
这篇文章主要介绍了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"
*/

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











元のタイトル:Bittensor = Aibitcoin:S4MMYETH、分散型AI研究元の翻訳:Zhouzhou、BlockBeats編集者注:この記事では、Bockchain Technologyを通じて中央集権的なAI企業の独占を破り、オープンおよび共同AI Ecosemsytemを促進することを望んでいます。 Bittensorは、さまざまなAIソリューションの出現を可能にし、Tao Tokensを通じてイノベーションを刺激するサブネットモデルを採用しています。 AI市場は成熟していますが、両節は競争リスクに直面し、他のオープンソースの対象となる場合があります

ビットコインの投資ブームは、世界初の分散型デジタル資産であるため、増加し続けています。中国はかつてビットコインの最大の市場でしたが、政策の影響は取引制限につながりました。今日、韓国は世界の主要なビットコイン市場の1つになっており、投資家はITとその国内ビットコインの違いに疑問を投げかけています。この記事では、両国のビットコイン市場間の違いに関する詳細な分析を行います。韓国と中国のビットコイン市場の違いの分析。たとえば、2024年10月下旬、韓国のビットコインの価格はかつてでした

人工知能エージェント(AIAGENTS)は、大企業から中小企業まで、企業の日常業務に急速に統合されており、販売、マーケティング、金融、法律、IT、プロジェクト管理、ロジスティクス、顧客サービス、ワークフローオートメーションなど、ほとんどすべての分野を使用し始めています。私たちは、データの手動処理の時代から、繰り返しタスクの実行、Excelテーブルを使用してAIエージェントが24時間体制の自律操作の時代に移動しています。これにより、効率が向上するだけでなく、コストが大幅に削減されます。 Web2のAIエージェントのアプリケーションケース:Ycombinatorの視点Apten:AIとSMSテクノロジーを組み合わせた販売およびマーケティング最適化ツール。 Bildai:建築青写真を読むことができるモデル、

Nexo:それは暗号通貨交換であるだけでなく、デジタルファイナンシャルマネージャーでもあります。これにより、ユーザーは担保として暗号通貨でローンを取得することができ、関心を得るためのサービスを提供します。 Nexoは暗号通貨の購入、販売、償還機能も提供していますが、その中心的なビジネスは暗号融資です。この記事では、投資家により包括的な理解を提供するために、Nexoの運用モデルとセキュリティを詳細に調査します。 Nexoのオペレーティングモデルは2018年に設立され、スイスのZugに本社を置き、デジタルファイナンスの分野の先駆者です。これは、他の集中交換とは異なり、包括的な金融サービスの提供に重点を置いています。ユーザーは、資産を販売せずに暗号通貨を売買、取引することができます

イーサリアムとビットコインの違いは重要です。技術的には、BitcoinはPowを使用し、EtherはPowからPOSに移行しました。ビットコインの取引速度は遅く、イーサリアムは高速です。アプリケーションシナリオでは、Bitcoinは支払いストレージに焦点を当て、EtherはスマートコントラクトとDAPPをサポートしています。発行に関しては、ビットコインの総量は2100万人であり、エーテルコインの総額は固定されていません。各セキュリティチャレンジが利用可能です。市場価値に関しては、ビットコインが最初にランク付けされ、両方の価格の変動は大きいですが、特性が異なるため、イーサリアムの価格動向はユニークです。

この記事では、セサミオープンドアゲートの古いバージョンの違いと、新しいバージョンの違いを紹介します。インターフェイス設計の観点から、新しいバージョンはレイアウトを最適化し、機能的なエクスペリエンスの観点から、ユーザーエクスペリエンスが最適化され、セキュリティパフォーマンスが追加され、セキュリティメカニズムが追加され、コンプライアンスが改善されます。ただし、実際の違いは、プラットフォームの特定の更新コンテンツによって決定する必要があります。

ビットコイン:デジタルゴールドまたはストック取引デリバティブ?新たな投資方法としてのビットコインの性質の詳細な分析。この記事では、定義、自然、発行メカニズムなどの側面から詳細について説明し、ビットコイン投資の謎を明らかにします。ビットコインと株式:ビットコインと株式の本質的な違いは、ビットコインへの投資は株式への投資と同じではありません。ビットコインは、デジタル資産または仮想資産のカテゴリに属する分散型デジタル通貨です。この概念は、2009年に中本atによって提案されました。従来の通貨とは異なり、

Bean BunとDeepseekのコアの違いは、検索の精度と複雑さです。 1. Doubaoは、シンプルで直接的なキーワードのマッチングに基づいていますが、低コストですが、精度が低く、構造化されたデータにのみ適しています。深い学習に基づいています。最終的な選択は、アプリケーションのシナリオとリソースの制限に依存します。
