Vergleich und Verständnis der neuen Funktionen von PHP7
1.null-Koaleszenzoperator (??)
?? Syntax: Wenn die Variable existiert und der Wert nicht NULL ist, gibt sie ihren eigenen Wert zurück, andernfalls wird sie zurückgegeben Es ist der zweite Operand.
//php7以前 if判断 if(empty($_GET['param'])) { $param = 1; }else{ $param = $_GET['param']; } //php7以前 三元运算符 $param = empty($_GET['param']) ? 1 : $_GET['param']; //PHP7 null合并运算符 $param = $_GET['param'] ?? 1;//1
2. define() definiert das konstante Array
//php7以前 define("CONTENT", "hello world"); echo CONTENT;//hello world //PHP7 define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[2];//bird //PHP7 类外也可使用const来定义常量 const CONSTANT = 'Hello World'; echo CONSTANT;//Hello World
3. Kombinierte Vergleichsoperatoren (<=>)
Der kombinierte Vergleichsoperator wird verwendet, um zwei Ausdrücke zu vergleichen. Wenn b, gibt er jeweils -1, 0 oder 1 zurück. Das Prinzip des Vergleichs besteht darin, den regulären Vergleichsregeln von PHP zu folgen.
rrree4. Variablentypdeklaration
Zwei Modi: obligatorischer (Standard) und strikter Modus. Die folgenden Typparameter können verwendet werden: string, int, float, bool
//整数 echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 //浮点数 echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 //字符串 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1
5. Rückgabewert-Typdeklaration
Fügen Sie Unterstützung für die Rückgabetyp-Deklaration hinzu (fügen Sie zur Verwendung hinzu: Typnamen nach der Funktionsdefinition).
//... 操作符: 表示这是一个可变参数. php5.6及以上的版本可使用: 函数定义的时候变量前使用. function intSum(int ...$ints){ return array_sum($ints); } var_dump(intSum(2,'3.5'));//5 //严格模式 //模式声明:declare(strict_types=1); 默认情况值为0,值为1代表为严格校验的模式 declare(strict_types=1); function add(int $a,int $b){ return $a+$b; } var_dump(add(2,'3.5')); //Fatal error: Uncaught TypeError: Argument 2 passed to add() must be of the type integer
6. Anonyme Klasse
Ermöglicht der neuen Klasse {}, ein anonymes Objekt zu erstellen.
//有效的返回类型 declare(strict_types = 1); function getInt(int $value): int { return $value; } print(getInt(6));//6
7. Abschluss::call ()
Die Methode Closure::call() wurde als kurze Möglichkeit hinzugefügt, einen Objektbereich vorübergehend an einen Abschluss zu binden und ihn aufzurufen. Ihre Leistung ist im Vergleich zu bindTo von PHP5 viel höher.
//无效返回类型 declare(strict_types = 1); function getNoInt(int $value): int { return $value+'2.5'; } print(getNoInt(6));//Fatal error: Uncaught TypeError: Return value of getNoInt() must be of the type integer
8. unserialize()
Die Funktion unserialize(): Die Filterfunktion kann die Codeinjektion illegaler Daten verhindern und sorgt für eine sicherere Reaktion auf serialisierte Daten
<?php //php7以前 接口实现 interface User{ public function getDiscount(); } class VipUser implements User{ //折扣系数 private $discount = 0.6; public function getDiscount() { return $this->discount; } } class Goods{ private $price = 200; private $objectVipUser; //User接口VipUser类实现 public function getUserData(User $User){ $this->objectVipUser = $User; $discount = $this->objectVipUser->getDiscount(); echo "商品价格:".$this->price*$discount; } } $display = new Goods(); //常规实例化接口实现对象 $display->getUserData(new VipUser);//商品价格:120
9. IntlChar
IntlChar: Bietet Zugriff auf einige praktische Methoden, die für den Zugriff auf Unicode-Zeicheninformationen verwendet werden können. Hinweis: Zur Verwendung muss die Intl-Erweiterung installiert sein
<?php //php7 创建一个匿名的对象 interface User{ public function getDiscount(); } class Goods{ private $price = 200; private $objectVipUser; public function getUserData($User){ $this->objectVipUser = $User; $discount = $this->objectVipUser->getDiscount(); echo "商品价格:".$this->price*$discount; } } $display = new Goods(); //new匿名对象实现user接口 $display->getUserData(new class implements User{ private $discount = 0.6; public function getDiscount() { return $this->discount; } });//商品价格:120
10. CSPRNG
Die CSPRNG-Funktion bietet einen einfachen Mechanismus zum Generieren von Zufallszahlen für Passwörter. random_bytes() -Kryptografisch geschütztes Pseudo- Zufallszeichenfolge.Random_int() -Kryptografisch geschützte pseudozufällige Ganzzahl.<?php //php7以前 class A { private $attribute = 'hello world'; } $getClosure = function(){ return $this->attribute; }; $getAttribute = $getClosure->bindTo(new A, 'A');//中间层闭包 echo $getAttribute();//hello world
11. Use-Anweisung
Sie können eine einzelne Use-Anweisung verwenden um Klassen, Funktionen und Konstanten aus demselben Namespace zu importieren, anstatt mehrere Use-Anweisungen zu verwenden. 12. Die neu hinzugefügte intdiv()-Funktion erhält zwei Parameter , und der Rückgabewert ist der Wert des ersten Parameters dividiert durch den zweiten Parameter und gerundet.<?php
//PHP7
class A {
private $attribute = 'hello world';
}
$getClosure = function(){
return $this->attribute;
};
echo $getClosure->call(new A);//hello world
Nach dem Login kopieren13 PHP7-Fehlerbehandlung
PHP7 hat die Art und Weise am meisten verändert Im Gegensatz zum herkömmlichen Fehlerberichtsmechanismus von PHP5 werden die meisten Fehler jetzt als Fehlerausnahmen ausgelöst. Diese Fehlerausnahme kann wie eine normale Ausnahme behandelt werden, die von einem Try/Catch-Block abgefangen wird /catch-Block, die Ausnahmebehandlungsfunktion (registriert durch set_Exception_handler()) wird zur Verarbeitung aufgerufen <?php //PHP7 class A { private $attribute = 'hello world'; } $getClosure = function(){ return $this->attribute; }; echo $getClosure->call(new A);//hello world
Wenn die Ausnahmebehandlungsfunktion nicht registriert wurde, wird sie auf herkömmliche Weise behandelt: Als schwerwiegender Fehler gemeldet (. Schwerwiegender Fehler).
Die Error-Klasse wird nicht von der Exception-Klasse erweitert, daher kann Code wie „catch“ (Exception $e) { ... } „Error“ nicht abfangen. Sie können Code wie „catch“ (Error $e) verwenden. { ... }, oder durch Registrieren einer Ausnahmehandlerfunktion (set_Exception_handler()), um Fehler abzufangen.
<?php class A{ public $name = 'admin_a'; } class B{ public $name = 'admin_b'; } $objA = new A(); $objB = new B(); $serializedObjA = serialize($objA); $serializedObjB = serialize($objB); //默认行为是接收所有类; 第二个参数可以忽略 $dataA = unserialize($serializedObjA , ["allowed_classes" => true]); var_dump($dataA);//object(A)#3 (1) { ["name"]=> string(7) "admin_a" } //如果allowed_classes设置为false,unserialize会将所有对象转换为__PHP_Incomplete_Class对象 $dataA = unserialize($serializedObjA , ["allowed_classes" => false]); var_dump($dataA);//object(__PHP_Incomplete_Class)#4 (2) { ["__PHP_Incomplete_Class_Name"]=> string(1) "A" ["name"]=> string(7) "admin_a" } //转换所有对象到 __PHP_Incomplete_Class对象,除了对象"B" $dataB = unserialize($serializedObjB , ["allowed_classes" => ["B"]]); var_dump($dataB);//object(B)#3 (1) { ["name"]=> string(7) "admin_b" }
Für weitere PHP-bezogene Kenntnisse, Bitte besuchen Sie die
PHP-Chinese-Website!
Das obige ist der detaillierte Inhalt vonVergleich und Verständnis der neuen Funktionen von PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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



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.

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

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

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.

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 ...

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 ...

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.

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.
