Heim Backend-Entwicklung PHP7 Werfen wir einen Blick auf die wichtigsten neuen Funktionen von PHP7

Werfen wir einen Blick auf die wichtigsten neuen Funktionen von PHP7

Jun 28, 2020 pm 04:26 PM
php7 新特性


Werfen wir einen Blick auf die wichtigsten neuen Funktionen von PHP7

PHP hat jetzt offiziell die RC5-Version von PHP7 veröffentlicht. Jetzt sind die wichtigsten Funktionen von PHP7 definitiv fertiggestellt. es wird keine Änderungen mehr geben. Bei den Iterationen einiger Folgeversionen handelt es sich hauptsächlich um Fehlerbehebungen, Optimierungen und Ähnliches. Lassen Sie uns über die wichtigsten Änderungen in PHP7 sprechen, auf die wir uns gefreut haben.

Vorschau auf neue Funktionen

ZEND引擎升级到Zend Engine 3,也就是所谓的PHP NG
增加抽象语法树,使编译更加科学
64位的INT支持
统一的变量语法
原声的TLS - 对扩展开发有意义
一致性foreach循环的改进
新增 <=>、**、?? 、\u{xxxx}操作符
增加了返回类型的声明
增加了标量类型的声明
核心错误可以通过异常捕获了
增加了上下文敏感的词法分析
Nach dem Login kopieren

Verwandte Lernempfehlungen: PHP Programmieren vom Anfänger bis zum Experten

Einige Funktionen entfernt

1. Einige alte Erweiterungen wurden entfernt und auf PECL migriert (z. B.: MySQL)
2. Unterstützung für SAPIs entfernt
3. Tags wie 4. Hexadezimale String-Konvertierung wurde abgeschafft

//PHP5
"0x10" == "16"

//PHP7
"0x10" != "16"
Nach dem Login kopieren

5. HTTP_RAW_POST_DATA wurde entfernt (Sie können stattdessen php://input verwenden)

6 Statische Funktionen unterstützen den Aufruf einer nicht statischen Funktion nicht mehr über ein inkompatibles $this
$o = & new className{}. wird nicht mehr unterstützt.
Die Datei 7.php.ini hat # als Kommentar entfernt und verwendet ; zum Kommentieren

Einige Verhaltensänderungen

Konstruktoren mit demselben Namen in Funktionsdefinitionsparametern vom Typ
werden nicht mehr unterstützt (derzeit nicht entfernt, werden aber in Zukunft entfernt)
String, int, float und andere Schlüsselwörter können nicht als Klassennamen verwendet werden
func_get_args() erhält den Wert der aktuellen Variablen

function test ($num) {
  $num++;
  var_dump(func_get_args()[0]);
};

test(1)

//PHP5
int(1)

//PHP7
int(2)
Nach dem Login kopieren

Hier sind einige Haupt- und Kernfunktionen, die für unseren PHPer wichtiger sind. Lassen Sie mich die wichtigen Funktionen vorstellen

PHP NG

Die neue PHP-Engine hat viele Stellen optimiert, und deshalb hat PHP7 offiziell eine bessere Leistung als PHP5.

Rekonstruktion der ZVAL-Struktur

Links ist der Zval von PHP5 (24 Bytes) und rechts der Zval von PHP7 (16 Bytes) ;

Es ist ersichtlich, dass der Zval von PHP7 komplizierter ist als der von PHP5, aber er kann von 24 Bytes auf 16 Bytes reduziert werden.

In der C-Sprache belegt jede Mitgliedsvariable von struct einen unabhängigen Speicherplatz, während sich die Mitgliedsvariablen in Union einen Speicherplatz teilen (Union wird häufig als Ersatz für struct in PHP7 verwendet). Obwohl es den Anschein hat, dass es viel mehr Mitgliedsvariablen gibt, ist daher der tatsächlich belegte Speicherplatz, von denen viele öffentlich sind, zurückgegangen.

Verwenden Sie das neue Zend Array, um die vorherige HashTale-Struktur zu ersetzen

Das am häufigsten verwendete, nützlichste, bequemste und flexibelste in unserem PHP Programme Es handelt sich um ein Array, und die unterste Ebene von PHP5 wird von HashTable implementiert. PHP7 verwendet den neuen Zend-Array-Typ, und die Leistung und Zugriffsgeschwindigkeit wurden erheblich verbessert!
Einige sehr häufig verwendete und kostengünstige Funktionen werden direkt zu Opcodes, die von der Engine unterstützt werden

call_user_function(_array) => ZEND_INIT_USER_CALL
is_int/string/array/* => ZEND_TYPE_CHECK
strlen => ZEND_STRLEN
defined => ZEND+DEFINED
Nach dem Login kopieren

Verwendet neue Speicherzuweisungs- und Verwaltungsmethoden, um Speicherverschwendung zu reduzieren
Kernsortierung zend_sort Optimize

//PHP5 - 快速排序(非稳定排序)
array(1 => 0, 0 => 0)

//PHP7 - 快速排序+选择排序(稳定排序)
array(0 => 0, 1 => 0)
Nach dem Login kopieren

Verwenden Sie die Auswahlsortierung für Elemente mit weniger als 16 Elementen, teilen Sie sie für Elemente mit mehr als 16 Elementen in 16er-Einheiten auf, verwenden Sie die Auswahlsortierung separat, kombinieren Sie sie dann alle und verwenden Sie die Schnellsortierung. Im Vergleich zur vorherigen Sortierung haben sich die internen Elemente von instabiler Sortierung zu stabiler Sortierung geändert, wodurch die Anzahl der Elementaustausche verringert, die Anzahl der Speicheroperationen verringert und die Leistung um 40 % verbessert wurde
Abstrakter Syntaxbaum

Wenn wir jetzt einen solchen Bedarf haben, müssen wir eine Syntaxerkennung für die PHP-Quelldatei durchführen und Codierungsstandards implementieren. Vor PHP5 gab es kein AST und Opcodes wurden direkt vom Parser generiert! Um dies zu erreichen, müssen wir einige externe PHP-Syntaxparser verwenden. PHP7 fügt AST hinzu. Wir können eine solche Erweiterung selbst implementieren und die von der Erweiterung bereitgestellten Funktionen verwenden, um die der Datei entsprechende AST-Struktur direkt abzurufen Wir können es identifizieren, sodass wir auf dieser Grundlage einige Optimierungen und Beurteilungen vornehmen können.

64-Bit-INT-Unterstützung

Unterstützt die Speicherung von Zeichenfolgen mit mehr als 2 GB
Unterstützt das Hochladen von Dateien mit mehr als 2 GB
Stellen Sie sicher, dass die Zeichenfolge vorhanden ist in [64-bit] ist 64bit auf allen Plattformen
Einheitliche Syntaxvariablen

$$foo[&#39;bar&#39;][&#39;baz&#39;]

//PHP5
($$foo)[‘bar&#39;][&#39;baz&#39;]

//PHP7: 遵循从左到右的原则
${$foo[‘bar&#39;][&#39;baz&#39;]}
Nach dem Login kopieren

Verbesserungen in der foreach-Schleife

//PHP5
$a = array(1, 2, 3);foreach ($a as $v){var_dump(current($a));}
int(2)
int(2)
int(2)

$a = array(1, 2, 3);$b=&$a;foreach ($a as $v){var_dump(current($a));}
int(2)
int(3)
bool(false)

$a = array(1, 2, 3);$b=$a;foreach ($a as $v){var_dump(current($a));}
int(1)
int(1)
int(1)

//PHP7:不再操作数据的内部指针了
$a = array(1, 2, 3);foreach ($a as $v){var_dump(current($a))}
int(1)
int(1)
int(1)

$a = array(1, 2, 3);$b=&$a;foreach ($a as $v){var_dump(current($a))
int(1)
int(1)
int(1)

$a = array(1, 2, 3);$b=$a;foreach ($a as $v){var_dump(current($a))}
int(1)
int(1)
int(1)
Nach dem Login kopieren

Mehrere neue Operatoren

//<=> - 比较两个数的大小【-1:前者小于后者,0:前者等于后者,1:前者大于后者】
echo 1 <=> 2;//-1
echo 1 <=> 1;//0
echo 1 <=> 0;//1

// ** - 【a的b次方】
echo 2 ** 3;//8

//?? - 三元运算符的改进
//php5
$_GET[&#39;name&#39;] ? $_GET[&#39;name&#39;] : &#39;&#39;;//Notice: Undefined index: …
//php7
$_GET[&#39;name&#39;] ?? &#39;&#39; -> &#39;&#39;;

//\u{xxxx} - Unicode字符的解析
echo "\u{4f60}";//你
echo "\u{65b0}";//新
Nach dem Login kopieren

Deklaration des Rückgabetyps

function getInt() : int {
  return “test”;
};

getInt();

//PHP5
#PHP Parse error: parse error, expecting &#39;{&#39;...

//PHP7
#Fatal error:Uncaught TypeError: Return value of getInt() must be of the type integer, string returned
Nach dem Login kopieren

Deklaration des Skalartyps

function getInt(int $num) : int {
  return $num;
};

getInt(“test”);

//PHP5
#PHP Catchable fatal error: Argument 1 passed to getInt() must be an instance of int, string given…

//PHP7
#Fatal error: Uncaught TypeError: Argument 1 passed to getInt() must be of the type integer, string given…
Nach dem Login kopieren

Kernfehler können durch Ausnahmen abgefangen werden

try {
  non_exists_func();
} catch(EngineException $e) {
  echo “Exception: {$e->getMessage();}\n”;
}

//这里用php7试了一下还是没法捕获,但是看鸟哥介绍说是可行的。。。
#Exception: Call to undefined function non_exists_func()
Nach dem Login kopieren

Kontextsensitive lexikalische Analyse

//PHP5
class Collection {public function foreach($arr) {}}
#Parse error: parse error, expecting `"identifier (T_STRING)”&#39;...

//PHP7
class Collection {
  public function foreach($arr) {}
  public function in($arr){}
  public function where($condition){}
  public function order($condition){}
}
$collection = new Collection();
$collection->where()->in()->foreach()->order();
Nach dem Login kopieren

Das ist Ich habe im Grunde mein vorläufiges Verständnis von PHP7 abgeschlossen. Ich hoffe, dass ihr sie rechtzeitig korrigieren und mir Notizen machen könnt. hey-hey!

Das obige ist der detaillierte Inhalt vonWerfen wir einen Blick auf die wichtigsten neuen Funktionen von PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was soll ich tun, wenn das Plug-in in php7.0 installiert ist, aber immer noch angezeigt wird, dass es nicht installiert ist? Was soll ich tun, wenn das Plug-in in php7.0 installiert ist, aber immer noch angezeigt wird, dass es nicht installiert ist? Apr 02, 2024 pm 07:39 PM

So beheben Sie das Problem, dass das Plugin in PHP 7.0 nicht installiert ist: Überprüfen Sie die Plugin-Konfiguration und aktivieren Sie das Plugin. Starten Sie PHP neu, um die Konfigurationsänderungen zu übernehmen. Überprüfen Sie die Berechtigungen der Plugin-Datei, um sicherzustellen, dass sie korrekt sind. Installieren Sie fehlende Abhängigkeiten, um sicherzustellen, dass das Plugin ordnungsgemäß funktioniert. Wenn alle anderen Schritte fehlschlagen, erstellen Sie PHP neu. Weitere mögliche Ursachen sind inkompatible Plugin-Versionen, das Laden der falschen Version oder PHP-Konfigurationsprobleme.

PHP 8.3 veröffentlicht: Neue Features auf einen Blick PHP 8.3 veröffentlicht: Neue Features auf einen Blick Nov 27, 2023 pm 12:52 PM

PHP8.3 veröffentlicht: Überblick über neue Funktionen Da sich die Technologie weiterentwickelt und sich ändern muss, werden Programmiersprachen ständig aktualisiert und verbessert. PHP ist eine in der Webentwicklung weit verbreitete Skriptsprache und wurde ständig verbessert, um Entwicklern leistungsfähigere und effizientere Tools zur Verfügung zu stellen. Die kürzlich veröffentlichte PHP 8.3-Version bringt viele lang erwartete neue Funktionen und Verbesserungen. Werfen wir einen Blick auf einen Überblick über diese neuen Funktionen. Initialisierung von Nicht-Null-Eigenschaften Wenn in früheren Versionen von PHP einer Klasseneigenschaft nicht explizit ein Wert zugewiesen wurde, ist es ihr Wert

Ein Leitfaden zum Erlernen der neuen Funktionen von PHP8 und zum Erwerb eines tiefgreifenden Verständnisses der neuesten Technologie Ein Leitfaden zum Erlernen der neuen Funktionen von PHP8 und zum Erwerb eines tiefgreifenden Verständnisses der neuesten Technologie Dec 23, 2023 pm 01:16 PM

Eine ausführliche Analyse der neuen Funktionen von PHP8, um Ihnen zu helfen, die neueste Technologie zu beherrschen. Im Laufe der Zeit hat sich die Programmiersprache PHP ständig weiterentwickelt und verbessert. Die kürzlich veröffentlichte PHP8-Version bietet Entwicklern viele spannende neue Funktionen und Verbesserungen, die unsere Entwicklungsarbeit komfortabler und effizienter machen. In diesem Artikel analysieren wir die neuen Funktionen von PHP8 eingehend und stellen spezifische Codebeispiele bereit, die Ihnen helfen, diese neuesten Technologien besser zu beherrschen. Der JIT-Compiler PHP8 führt die JIT-Kompilierung (Just-In-Time) ein

FAQ-Leitfaden zur PHP-Serverumgebung: Häufige Probleme schnell lösen FAQ-Leitfaden zur PHP-Serverumgebung: Häufige Probleme schnell lösen Apr 09, 2024 pm 01:33 PM

Zu den gängigen Lösungen für PHP-Serverumgebungen gehört die Sicherstellung, dass die richtige PHP-Version installiert ist und relevante Dateien in das Modulverzeichnis kopiert wurden. Deaktivieren Sie SELinux vorübergehend oder dauerhaft. Überprüfen und konfigurieren Sie PHP.ini, um sicherzustellen, dass die erforderlichen Erweiterungen hinzugefügt und korrekt eingerichtet wurden. Starten oder starten Sie den PHP-FPM-Dienst neu. Überprüfen Sie die DNS-Einstellungen auf Auflösungsprobleme.

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Was ist besser, PHP8 oder PHP7? Was ist besser, PHP8 oder PHP7? Nov 16, 2023 pm 03:09 PM

Im Vergleich zu PHP7 bietet PHP8 einige Vorteile und Verbesserungen in Bezug auf Leistung, neue Funktionen und Syntaxverbesserungen, Typsystem, Fehlerbehandlung und Erweiterungen. Die Wahl der zu verwendenden Version hängt jedoch von Ihren spezifischen Anforderungen und Projektumständen ab. Detaillierte Einführung: 1. Leistungsverbesserung: PHP8 führt den Just-in-Time-Compiler (JIT) ein, der die Ausführungsgeschwindigkeit des Codes verbessern kann. 2. Neue Funktionen und Syntaxverbesserungen. PHP8 unterstützt die Deklaration benannter Parameter und optionaler Parameter. Durch die flexiblere Gestaltung von Funktionen werden anonyme Klassen, Typdeklarationen von Eigenschaften usw. eingeführt.

Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Apr 01, 2025 pm 03:06 PM

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

Was sind die neuen Funktionen von PHP8? Was sind die neuen Funktionen von PHP8? Sep 25, 2023 pm 01:34 PM

Zu den neuen Funktionen von PHP8 gehören JIT-Compiler, Typableitung, benannte Parameter, Union-Typen, Eigenschaften, Verbesserungen bei der Fehlerbehandlung, Unterstützung für asynchrone Programmierung, neue Standardbibliotheksfunktionen und anonyme Klassenerweiterungen. Detaillierte Einführung: 1. JIT-Compiler, PHP8 führt den JIT-Compiler ein, der eine wichtige Leistungsverbesserung darstellt. Der JIT-Compiler kann einige hochfrequente Ausführungscodes in Echtzeit kompilieren und optimieren, wodurch die Ausführungsgeschwindigkeit verbessert wird führt die Typinferenzfunktion ein, die es Entwicklern ermöglicht, beim Deklarieren von Variablen usw. automatisch den Typ von Variablen abzuleiten.

See all articles