new static() 和 new self() 的区别异同,staticself_PHP教程
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>
东西多了点。呵呵。帮你详细说一下。
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中
public static void main(String args[])这句话是一个主方法,
java程序可以有多个方法,但是主方法只能有一个,
用ststic修饰的方法称为类方法(main也是类方法)。
A a=new A()是创建一个实例对象 static 起的是修饰作用

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

Char und Unsigned char sind zwei Datentypen, die Charakterdaten speichern. Der Hauptunterschied ist der Weg, um mit negativen und positiven Zahlen umzugehen: Wertebereich: char signiert (-128 bis 127) und nicht signiertes char nicht signiert (0 bis 255). Negative Zahlenverarbeitung: char kann negative Zahlen speichern, unsigned char kann nicht. Bitmodus: char Das höchste Bit repräsentiert das Symbol, nicht signiertes char unsigned Bit. Arithmetische Operationen: SHOR und unsigned char sind signierte und nicht signierte Typen, und ihre arithmetischen Operationen sind unterschiedlich. Kompatibilität: SHAR und nicht signiertes Zeichen

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

H5. Der Hauptunterschied zwischen Mini -Programmen und App ist: Technische Architektur: H5 basiert auf Web -Technologie, und Mini -Programme und Apps sind unabhängige Anwendungen. Erfahrung und Funktionen: H5 ist leicht und einfach zu bedienen, mit begrenzten Funktionen; Mini -Programme sind leicht und haben eine gute Interaktivität. Apps sind leistungsstark und haben reibungslose Erfahrung. Kompatibilität: H5 ist plattformübergreifend, Applets und Apps werden von der Plattform eingeschränkt. Entwicklungskosten: H5 verfügt über niedrige Entwicklungskosten, mittlere Mini -Programme und die höchste App. Anwendbare Szenarien: H5 eignet sich für Informationsanzeigen, Applets eignen sich für leichte Anwendungen und Apps eignen sich für komplexe Funktionen.

PDF mit Passwort geschützt in Photoshop exportieren: Öffnen Sie die Bilddatei. Klicken Sie auf "Datei" & gt; "Export" & gt; "Exportieren Sie als PDF". Stellen Sie die Option "Sicherheit" fest und geben Sie dasselbe Passwort zweimal ein. Klicken Sie auf "Exportieren", um eine PDF -Datei zu generieren.

Multithreading ist eine wichtige Technologie in der Computerprogrammierung und wird zur Verbesserung der Programmausführungseffizienz verwendet. In der C -Sprache gibt es viele Möglichkeiten, Multithreading zu implementieren, einschließlich Threadbibliotheken, POSIX -Threads und Windows -API.
