Heim  >  Artikel  >  Backend-Entwicklung  >  Neue Funktionen, die wir in PHP7 nutzen sollten

Neue Funktionen, die wir in PHP7 nutzen sollten

迷茫
迷茫Original
2017-01-23 14:36:291166Durchsuche

PHP7 bringt erhebliche Leistungsverbesserungen und neue Funktionen sowie Verbesserungen einiger Funktionen früherer Versionen. Dieser Artikel wird Ihnen helfen, die neuen Funktionen in PHP7 zu verstehen und zu diskutieren.

1. Skalare Typdeklaration

Wir wissen, dass PHP eine schwach typisierte Programmiersprache ist, daher bietet es keine Methode zur Angabe des Typs von Eingabeparametern und Rückgabewerten. PHP7 bricht diesen Status Quo und fügt Unterstützung hinzu Skalare Die Deklaration von Typen (int, float, string, bool) wird unterstützt, um zu deklarieren, ob eine strikte Typprüfung erforderlich ist:

declare(strict_types=1)
function add(int $x, int $y) : int
{
    return $x + $y;
}
echo add(1, 2);  //int(7)
declare(strict_types=1)
function add(int $x, int $y) : int
{
    return $x + $y;
}
echo add(1, 2);  //int(7)

Gültige Typen sind: Klassen-/Schnittstellenname, self, array, callable, bool, float, int und string.

2. NULL-Merging-Operator

Der NULL-Merging-Operator wurde in PHP7 hinzugefügt, es wird für uns sehr praktisch sein. Ruft einen Parameter ab und kann einen Standardwert bereitstellen, wenn dieser leer ist. Wie gibt der ??-Operator die linke Seite zurück, wenn der Wert auf seiner linken Seite existiert und nicht NULL ist, andernfalls wird der Wert auf der rechten Seite zurückgegeben? Lassen Sie uns die Leistungsfähigkeit des ??-Operators anhand des folgenden Codeabschnitts erleben.

<?php // 获取user参数的值(如果为空,则用&#39;nobody&#39;)
// PHP5中我们这样来实现:
$username = isset($_GET[&#39;user&#39;]) ? $_GET[&#39;user&#39;] : &#39;nobody&#39;;
// PHP7中,使用??运算符更便捷:
$username = $_GET[&#39;user&#39;] ?? &#39;nobody&#39;;
??>
<?php // 获取user参数的值(如果为空,则用&#39;nobody&#39;)
// PHP5中我们这样来实现:
$username = isset($_GET[&#39;user&#39;]) ? $_GET[&#39;user&#39;] : &#39;nobody&#39;;
// PHP7中,使用??运算符更便捷:
$username = $_GET[&#39;user&#39;] ?? &#39;nobody&#39;;
??>

3. Anonyme Klasse

Wie der Name schon sagt, gibt es keinen Klassennamen und seine Deklaration und Instanziierung unterstützt gleichzeitig die Instanziierung Eine anonyme Klasse durch eine neue Klasse kann verwendet werden, um einige vollständige Klassendefinitionen zu ersetzen, die nach der Verwendung „gebrannt“ werden.

echo (new class() {
    public function myMethod() {
      return "Hello!";
    }
})->myMethod();
//Result: Hello!
echo (new class() {
    public function myMethod() {
      return "Hello!";
    }
})->myMethod();
//Result: Hello!

4. Weitere Fehler können mit Ausnahmen behandelt werden

Mehr Fehler in PHP7 werden zu abfangbaren Ausnahmen und werden an den Entwickler zurückgegeben ist ein Fehler. Wenn er abgefangen wird, wird er zu einer Ausnahme, die im Programm behandelt werden kann. Standardmäßig führt Error direkt dazu, dass das Programm unterbrochen wird, während PHP7 ihn über Try/Catch-Blöcke erfasst und verarbeitet, sodass das Programm weiterhin ausgeführt werden kann und Programmierern flexiblere Optionen geboten werden.

Codebeispiel:

nonExistFunction($arg); // It will generate fatal error
nonExistFunction($arg); // It will generate fatal error

Zu diesem Zeitpunkt löst der obige Code den Fehler „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktionsmethode () für ein Nicht-Objekt“ aus Ein schwerwiegender Fehler stoppt die weitere Ausführung des folgenden Codes.

Wenn Sie den Code also weiterhin ausführen möchten, können Sie ihn durch Ausnahmebehandlung lösen:

try {
    nonExistFunction($arg); //This method is not exists then it will be go to catch
} catch (EngineException $e ) {
    echo "Exception: {$e->getMessage()}n";
}
try {
    nonExistFunction($arg); //This method is not exists then it will be go to catch
} catch (EngineException $e ) {
    echo "Exception: {$e->getMessage()}n";
}

5. Kombiniert mit dem Vergleichsoperator 96b4fef55684b9312718d5de63fb7121

Dies erfordert nicht viel Erklärung. Schauen wir uns den Beispielcode direkt an. Sie können die Funktion dieses Operators anhand des Codes leicht verstehen.

// PHP 7之前的写法:比较两个数的大小
function func ( $ a , $ b ) {
   return ($a < $b) ? -1 : (($a > $b) ? 1 : 0)
}
// PHP新增的操作符 <=>
function func ( $ a , $ b ) {
   return $a <=> $b;
}
// PHP 7之前的写法:比较两个数的大小
function func ( $ a , $ b ) {
   return ($a < $b) ? -1 : (($a > $b) ? 1 : 0)
}
// PHP新增的操作符 <=>
function func ( $ a , $ b ) {
   return $a <=> $b;
}

6. Array-Konstanten definieren

Als wir in der Vergangenheit define() zum Definieren von Konstanten verwendeten, unterstützte der Datentyp nur Skalare, in PHP7 jedoch , Definition wird unterstützt Konstante vom Array-Typ.

define(&#39;MYCONSTANT&#39;, array(&#39;a&#39;,&#39;b&#39;,&#39;c&#39;));
define(&#39;MYCONSTANT&#39;, array(&#39;a&#39;,&#39;b&#39;,&#39;c&#39;));

Es gibt viele neue Funktionen in PHP7. Wir werden sie auch in Zukunft aktualisieren. Lassen Sie uns gemeinsam kommunizieren, lernen und Fortschritte machen.

Stellungnahme:
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