Heim > Backend-Entwicklung > PHP7 > Was sind die neuen Funktionen in jeder Version von PHP7.x?

Was sind die neuen Funktionen in jeder Version von PHP7.x?

醉折花枝作酒筹
Freigeben: 2023-02-18 06:02:02
nach vorne
1979 Leute haben es durchsucht

In diesem Artikel werden Ihnen die neuen Funktionen jeder Version von PHP7.x vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Was sind die neuen Funktionen in jeder Version von PHP7.x?

Vorwort

Letzten Monat sah mich mein Kollege

$a = $a ?? '';
Nach dem Login kopieren

schreiben und fragte mich, was das für eine Schreibweise sei. Gibt es eine andere Schreibweise? Ich sagte, dass dies eine Schreibmethode ist, die nur in PHP7 und höher verfügbar ist. Wissen Sie nicht? Er sagte, er wisse es nicht.

Ich murmelte in meinem Herzen und hatte vor, mit dem Schreiben dieses Blogs zu beginnen.

PHP7 sollte zusätzlich zu den Grundlagen ein modernes PHP sein. Da es in PHP7, starken Typdefinitionen und einigen grammatikalischen Schreibmethoden, wie z. B. kombinierten Vergleichsoperatoren, vorkam, kann define() Arrays und andere Funktionen definieren. Die formelle Einführung beginnt unten, beginnend mit PHP7.0. In Zukunft werden neue Versionen hinzugefügt, und zwar eine nach der anderen.

Okay, fangen wir an

PHP 7.0

Skalare Typdeklaration

Was ist ein Skalartyp? 🔜

Objekt (Objekt)

Eine Ressource ist eine spezielle Variable, die einen Verweis auf eine externe Ressource enthält. Ressourcen werden durch spezielle Funktionen erstellt und genutzt. Ressourcentypvariablen sind spezielle Handles zum Öffnen von Dateien, Datenbankverbindungen, Grafikbereichen usw.

Einfacher ausgedrückt ist ein Skalartyp ein Datentyp, der Variablen definiert.

In PHP5 gibt es Klassennamen, Schnittstellen, Arrays und Rückruffunktionen. In PHP wurden Strings, Integer-, Float- und Bool-Werte hinzugefügt. Schauen wir uns unten das Beispiel an. Hier definieren wir, dass $a vom Typ int sein muss. Wenn in der Typfunktion ein Fehler gemeldet wird. Ändern wir den obigen Code und es ist richtig.

function typeInt(int $a)
{
    echo $a;
}

typeInt('sad');
// 运行,他讲会报错 Fatal error: Uncaught TypeError: Argument 1 passed to type() must be of the type integer, string given
Nach dem Login kopieren

Rückgabewerttypdeklaration

Der Rückgabewert einer Funktionsmethode kann beispielsweise definiert werden, wenn eine Funktion von mir einen int-Typ zurückgeben muss, wird sie definitiv einen int-If zurückgeben Wenn Sie eine Zeichenfolge zurückgeben, wird ein Fehler gemeldet. Wie folgt

function typeString(string $a)
{
    echo $a;
}

typeString('sad'); 
//sad
Nach dem Login kopieren

Was wäre, wenn wir ein Array definieren und einen String oder andere Typen zurückgeben würden?

Dann meldet er einen Fehler wie

<?php

function returnArray(): array
{

    return [1, 2, 3, 4];
}

print_r(returnArray());
/*Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
*/
Nach dem Login kopieren

Null-Koaleszenzoperator

Aufgrund einer großen Anzahl von Situationen, in denen ternäre Ausdrücke und isset() im täglichen Gebrauch gleichzeitig verwendet werden, haben wir den Null-Koaleszieroperator (?? ) Syntaxzucker. Wenn die Variable existiert und nicht NULL ist, gibt sie ihren eigenen Wert zurück, andernfalls gibt sie ihren zweiten Operanden zurück.

function returnErrorArray(): array
{

    return &#39;1456546&#39;;
}

print_r(returnErrorArray());
/*
Array
Fatal error: Uncaught TypeError: Return value of returnArray() must be of the type array, string returned in 
*/
Nach dem Login kopieren
Spaceship-Operator

<?php

$username = $_GET[&#39;user&#39;] ?? &#39;nobody&#39;;
//这两个是等效的  当不存在user 则返回?? 后面的参数

$username = isset($_GET[&#39;user&#39;]) ? $_GET[&#39;user&#39;] : &#39;nobody&#39;;

?>
Nach dem Login kopieren

define Array definieren

In Versionen vor PHP7 war es beispielsweise nicht möglich,

// 整数
echo 1 <=> 1; // 0 当左边等于右边的时候,返回0
echo 1 <=> 2; // -1  当左边小于右边,返回-1
echo 2 <=> 1; // 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
Nach dem Login kopieren

Methoden-Batch-Import zu verwenden

define(&#39;ANIMALS&#39;, [
    &#39;dog&#39;,
    &#39;cat&#39;,
    &#39;bird&#39;
]);

echo ANIMALS[1]; // 输出 "cat"
Nach dem Login kopieren

###Unicode-Codepunktübersetzung Syntax

// PHP 7 之前的代码
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;

use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;

use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;

// PHP 7+ 及更高版本的代码
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};
Nach dem Login kopieren

Anonyme Klassen

echo "\u{aa}"; //ª
echo "\u{0000aa}";  //ª  
echo "\u{9999}"; //香
Nach dem Login kopieren

PHP 7.1

Nullable-Typen

Typen von Parametern und Rückgabewerten können jetzt nullbar gemacht werden, indem vor dem Typ ein Fragezeichen hinzugefügt wird. Wenn diese Funktion aktiviert ist, sind die übergebenen Parameter oder das von der Funktion zurückgegebene Ergebnis entweder vom angegebenen Typ oder null .

<?php
interface Logger {
    public function log(string $msg);
}

class Application {
    private $logger;

    public function getLogger(): Logger {
         return $this->logger;
    }

    public function setLogger(Logger $logger) {
         $this->logger = $logger;
    }
}

$app = new Application;
$app->setLogger(new class implements Logger {  //这里就是匿名类
    public function log(string $msg) {
        echo $msg;
    }
});
Nach dem Login kopieren

void

fügt einen Typ hinzu, der void zurückgibt, z. B.

<?php

function testReturn(): ?string
{
    return &#39;elePHPant&#39;;
}

var_dump(testReturn()); //string(10) "elePHPant"

function testReturn(): ?string
{
    return null;
}

var_dump(testReturn()); //NULL

function test(?string $name)
{
    var_dump($name);
}

test(&#39;elePHPant&#39;); //string(10) "elePHPant"
test(null); //NULL
test(); //Uncaught Error: Too few arguments to function test(), 0 passed in...
Nach dem Login kopieren

Mehrfache Ausnahmeerfassungsverarbeitung

Diese Funktion ist in der täglichen Entwicklung immer noch relativ häufig.

<?php
function swap(&$left, &$right) : void
{
    if ($left === $right) {
        return;
    }

    $tmp = $left;
    $left = $right;
    $right = $tmp;
}

$a = 1;
$b = 2;
var_dump(swap($a, $b), $a, $b);
Nach dem Login kopieren

PHP 7.2

PHP7.2 ist die am wenigsten beliebte PHP7-Serie Neue Funktionen

### Nachgestellte Kommas in gruppierten Namespaces zulassen

Zum Beispiel

<?php
try {
    // some code
} catch (FirstException | SecondException $e) {  //用 | 来捕获FirstException异常,或者SecondException 异常
  
}
Nach dem Login kopieren

Überschreiben abstrakter Methoden zulassen

<?php

use Foo\Bar\{
    Foo,
    Bar,
    Baz,
};
Nach dem Login kopieren

Neue Objekttypen

<?php

abstract class A
{
    abstract function test(string $s);
}
abstract class B extends A
{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;
}
Nach dem Login kopieren

PHP 7.3

PHP7.3 Es gibt nichts Besonderes an der Syntax Big Änderungen.

PHP 7.4

Klassenattribute unterstützen Typdeklarationen

Herzlichen Glückwunsch, dass PHP einen weiteren Schritt in Richtung starker Typisierung gemacht hat

<?php

function test(object $obj) : object  //这里 可以输入对象
{
    return new SplQueue();
}

test(new StdClass());
Nach dem Login kopieren

Pfeilfunktionen

Pfeilfunktionen bieten eine Kurzsyntax zum Definieren von Funktionen mithilfe impliziter Bereichsbindung nach Wert. Es ähnelt der Pfeilfunktion von JS, jedoch mit einem fn. Eine Welle von Beschwerden

Das obige ist der detaillierte Inhalt vonWas sind die neuen Funktionen in jeder Version von PHP7.x?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage