Heim Backend-Entwicklung PHP-Tutorial PHP7+ unterstützt auch Typdeklarationen. Sprechen wir über diese Funktion!

PHP7+ unterstützt auch Typdeklarationen. Sprechen wir über diese Funktion!

May 07, 2022 pm 09:22 PM
php php7

PHP hat auch damit begonnen, sich mit der Typdeklaration zu befassen. Der folgende Artikel wird Ihnen helfen, die Funktionen der PHP-Typdeklaration zu verstehen und die Fallstricke bei der Rückgabetypdeklaration zu erläutern alle!

PHP7+ unterstützt auch Typdeklarationen. Sprechen wir über diese Funktion!

Kürzlich habe ich die neuen Funktionen von PHP7 studiert und festgestellt, dass PHP auch damit begonnen hat, Typdeklarationen zu verwenden. Die Vorteile liegen auf der Hand: Es kann die Ausführungsgeschwindigkeit des Programms verbessern.

Beginnen wir mit der Einführung dieser neuen Funktion:

Standardmäßig befinden sich alle PHP-Dateien im schwachen Typprüfungsmodus.

PHP7+ hat die Funktion der Typdeklaration hinzugefügt. Es gibt zwei Modi für die Typdeklaration:

  • Erzwungener Modus (Standardmodus) Mein Verständnis ist, dass es nicht strikt zwischen Typen unterscheidet Konvertierung erzwingen, und die Typen sind inkonsistent.
  • Strenger ModusÜberprüfen Sie den Typ genau. Wenn der Typ nicht mit der Deklaration übereinstimmt, wird ein Fehler gemeldet

Syntaxformat für die Skalartypdeklaration:

declare(strict_types=1);
Nach dem Login kopieren

Der Wert von strict_types:

  • 1 stellt den strengen Typüberprüfungsmodus dar, die Rolle für Funktionsaufrufe und Rückgabeanweisungen; int
  • bool
interfaces

array
  • callable
  • Force-Modus (Standardmodus)
  • <?php
    
    function sum(int ...$ints)
    {
       return array_sum($ints);
    }
    
    print(sum(1, &#39;2&#39;, 3.1));
    ?>
    Nach dem Login kopieren
  • Die Ausführungsausgabe des obigen Programms ist: 6
  • Analyse: Konvertieren Sie den String-Typ „2“ in einen Integer-Typ 2, konvertieren Sie den Float-Typ 3.1 in den Integer-Typ 3 und addieren Sie sie dann, um das Ergebnis 6 zu erhalten.

Strenger Modus

<?php

declare(strict_types=1);

function sum(int ...$ints)
{
   return array_sum($ints);
}

print(sum(1, &#39;2&#39;, 3.1));
?>
Nach dem Login kopieren
Da das obige Programm den strikten Modus verwendet und der zweite Parameter nicht vom Typ int ist, lautet das Ausführungsergebnis wie folgt:

PHP Fatal error: Uncaught TypeError: Argument 2 übergeben an sum() muss vom Typ Ganzzahl, angegebener String, aufgerufen in... sein.6

分析一下即:将字符串类型的'2'转换成整型的2,将float类型的3.1转换为整型的3后再相加,得出结果6。

严格模式

<?php
declare(strict_types=1);

function returnIntValue(int $value): int
{
   return $value;
}

print(returnIntValue(5));
?>
Nach dem Login kopieren

以上程序因为采用了严格模式,因为第二个参数不是int类型,执行结果报错如下:

PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……

返回类型声明

PHP7+ 增加了对返回类型声明的支持,返回类型声明指明了函数返回值的类型。

可以声明的返回类型有:

  • string
  • int
  • float
  • bool
  • interfaces
  • array
  • callable

我踩的坑

这里我还真趟过坑,在新版本的phpstorm中会根据返回值类型出现提示代码,引导添加返回类型声明,我就加上了。但是后面因为业务的变化或者代码优化只修改了返回值(比如之前返回的是array,修改后返回了int),却忘记了修改返回类型声明(毕竟习惯了PHP弱语言类型这么多年了...),这样是会抛出异常导致报错的,这就是我踩到的坑,小伙们们在使用过程中要注意。

思考

GO语言是不会出现我上面说的问题的, 因为如果返回值类型和返回类型声明是编译不通过的,编译的时候就会报错。

而PHP作为弱类型语言,虽然做了返回类型声明这种优化,但是语言执行前不需要我们编译,直接发布运行,也就不能做到go语言的“编译报警”了,PHP会在执行的时候直接抛出异常。

<?php
declare(strict_types=1);

function returnIntValue(int $value): int
{
   return $value + 3.0;
}

print(returnIntValue(1));
?>
Nach dem Login kopieren

以上程序执行输出结果为:5

返回类型声明错误示例

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

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

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

以上程序由于采用了严格模式,返回值必须是 int,但是计算结果是float,导致报错,执行输出结果为:Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...

void 函数

注意:定义返回类型为 void 的函数不能有返回值,即使返回 null 也不行。

返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。

实例

rrreee

以上实例输出结果:

null int(2) int(1)

Deklaration des Rückgabetyps

PHP7+ fügt Unterstützung für die Deklaration des Rückgabetyps hinzu, die den Typ des Rückgabewerts der Funktion angibt .

Die Rückgabetypen, die deklariert werden können, sind:

🎜string🎜🎜int🎜🎜float🎜🎜bool🎜🎜interfaces🎜🎜array🎜🎜callable🎜🎜🎜🎜🎜Ich bin darauf getreten🎜 🎜 🎜🎜Das war ich tatsächlich Hier vor Pitfalls wird in der neuen Version von phpstorm ein Eingabeaufforderungscode basierend auf dem Rückgabewerttyp angezeigt, der Sie zum Hinzufügen einer Rückgabetypanweisung führt, also habe ich ihn hinzugefügt. Aber später habe ich aufgrund von Geschäftsänderungen oder Codeoptimierungen nur den Rückgabewert geändert (z. B. habe ich vorher ein Array zurückgegeben, aber nach der Änderung habe ich int zurückgegeben), aber ich habe vergessen, die Rückgabetypdeklaration zu ändern (schließlich habe ich das getan). Ich bin seit so vielen Jahren an die schwachen Sprachtypen von PHP gewöhnt...), wird dies eine Ausnahme auslösen und einen Fehler verursachen. Das ist die Falle, auf die ich getreten bin. 🎜🎜🎜🎜Thinking🎜🎜🎜🎜🎜GO-Sprache wird das oben erwähnte Problem nicht haben, denn wenn der Rückgabewerttyp und die Rückgabetypdeklaration nicht kompiliert werden können, wird während der Kompilierung ein Fehler gemeldet. 🎜🎜🎜🎜Als schwach typisierte Sprache hat PHP Optimierungen wie Rückgabetypdeklarationen vorgenommen, erfordert jedoch keine Kompilierung vor der Ausführung der Sprache. Es kann direkt freigegeben und ausgeführt werden, sodass der „Kompilierungsalarm“ nicht erreicht werden kann " der Go-Sprache. PHP löst direkt während der Ausführung eine Ausnahme aus. 🎜🎜rrreee🎜Das Ausgabeergebnis der Ausführung des obigen Programms ist: 5🎜🎜🎜🎜Beispiel für einen Rückgabetyp-Deklarationsfehler🎜🎜🎜rrreee🎜Aufgrund des strikten Modus des obigen Programms ist das Der Rückgabewert muss int sein, aber das Berechnungsergebnis ist ein Float, was zu einem Fehler führt. Die Ausführungsausgabe lautet: Schwerwiegender Fehler: Nicht erfasster TypeError: Der Rückgabewert von returnIntValue() muss vom Typ Integer sein, zurückgegebener Float. .🎜🎜🎜🎜void-Funktion🎜🎜 🎜🎜🎜Hinweis: Eine mit dem Rückgabetyp void definierte Funktion kann keinen Rückgabewert haben, selbst wenn sie null zurückgibt. 🎜🎜🎜Methoden, deren Rückgabewert als void-Typ deklariert ist, müssen entweder die Return-Anweisung ganz weglassen oder eine leere Return-Anweisung verwenden. 🎜🎜🎜Beispiel🎜🎜rrreee🎜Das Ausgabeergebnis des obigen Beispiels: 🎜🎜null int(2) int(1)🎜🎜🎜Originaladresse: https://juejin.cn/post/ 7062942459247984648🎜🎜 Autor: Wang Zhongyang Go🎜🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜

Das obige ist der detaillierte Inhalt vonPHP7+ unterstützt auch Typdeklarationen. Sprechen wir über diese Funktion!. 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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Heiße Themen

Java-Tutorial
1658
14
PHP-Tutorial
1257
29
C#-Tutorial
1231
24
Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgefü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 PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

PHP und Python: Vergleich von zwei beliebten Programmiersprachen PHP und Python: Vergleich von zwei beliebten Programmiersprachen Apr 14, 2025 am 12:13 AM

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP: Eine Schlüsselsprache für die Webentwicklung PHP: Eine Schlüsselsprache für die Webentwicklung Apr 13, 2025 am 12:08 AM

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP in Aktion: Beispiele und Anwendungen in realer Welt PHP in Aktion: Beispiele und Anwendungen in realer Welt Apr 14, 2025 am 12:19 AM

PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

See all articles