Der Unterschied zwischen new static() und new self() in PHP
self: zeigt immer auf die Klasse selbst, in der sich der Self-Code befindet, egal wie oft diese Klasse vererbt wird , self verweist auf die ursprüngliche Verwendungsklasse von self
static: Zeigt auf eine Klasse, die static verwendet. Die Bedeutung von static kann nur durch Vererbung existieren. Ansonsten ist static dasselbe wie self.
<code><span><span>class</span><span>A</span> {</span><span>public</span><span><span>function</span><span>getStatic</span><span>()</span>{</span><span>return</span><span>new</span><span>static</span>(); } <span>public</span><span><span>function</span><span>getSelf</span><span>()</span>{</span><span>return</span><span>new</span><span>self</span>(); } } <span><span>class</span><span>B</span><span>extends</span><span>A</span>{</span>} var_dump((<span>new</span> B())->getSelf());<span>//A</span> var_dump((<span>new</span> B())->getStatic());<span>//B</span></code>
Frage:
1. Ich weiß nicht, wozu new static() und new self() dienen
2. Wenn Sie new self() verwenden möchten, warum nicht new A();