Heim Backend-Entwicklung PHP-Tutorial Zusammenfassung der PHP-Funktionstypdeklaration

Zusammenfassung der PHP-Funktionstypdeklaration

Nov 11, 2019 pm 01:47 PM
php函数

PHP7 beginnt, die skalare Typdeklaration zu unterstützen, und die Variante stark typisierter Sprache ist relativ stark ausgeprägt. Bei der Verwendung dieser Funktion bin ich auf zwei Fallstricke gestoßen: einmal bei der Deklaration von Parametern vom booleschen Typ und zuletzt bei der Deklaration von Parametern vom doppelten Typ, die beide zu Laufzeitfehlern führten. Um in Zukunft ähnliche Fehler zu vermeiden, habe ich in den letzten Tagen die offiziellen Dokumente gelesen. Dieser Artikel ist eine Zusammenfassung der Verwendung von Typdeklarationen in PHP-Funktionen nach dem Lesen.

Syntaktisch hat die PHP-Funktionsdefinition mehrere Perioden durchlaufen:

Antike (PHP 4)

Es ist sehr einfach, eine Funktion zu definieren. Verwenden Sie die Syntaxdeklaration von Funktionsname(args) {body}. Parameter- und Rückgabewerttypen können nicht angegeben werden, und es gibt eine unbegrenzte Anzahl möglicher Parameter- und Rückgabewerttypen. Dies ist bei weitem die gebräuchlichste Art, eine Funktion zu deklarieren.

Array- und Referenztyp-Parameterwertdeklaration (PHP 5)

Array, Klasse, Schnittstelle und Callable können in der Funktionsdeklaration verwendet werden. Ab 5.6 werden Konstanten (einschließlich Klassenkonstanten) als Standardparameter sowie Parameterarrays (mit vorangestellten Auslassungspunkten...) unterstützt. Beispiel:

function sum(...$numbers) {
    $sum = 0;
    foreach ($numbers as $number) {
        $sum += $number;
    }
    return $sum;
}
Nach dem Login kopieren

Hinweis: Wenn der Wert des Parameters null sein kann, muss null der Standardwert des Parameters sein, sonst tritt beim Aufruf ein Fehler auf. Zum Beispiel:

function foo(array $arr = null) {
    ...
}
Nach dem Login kopieren

Skalare Typ- und Rückgabewertdeklaration (PHP 7)

Funktionen unterstützen offiziell Skalartypen (int, bool, float, string) und Rückgabewerttypen (Der deklarierbare Typ ist derselbe wie der Parameter) Deklaration. Ab dieser Version können Funktionsdeklarationen, abgesehen von Syntaxunterschieden, formal wie stark typisierte Sprachen erstellt werden.

Wenn der Rückgabewert der Funktion möglicherweise null ist, kann der Rückgabewerttyp leider nicht angegeben werden. Zum Beispiel:

function getModel() : Foo {
    if ($this->_model === null) {
         $this->_model = xxxx;  // get from db or otherelse
    }
    return $this->_model;     // 如果$this->_model仍是null,运行出错
}
Nach dem Login kopieren

Parameter und Rückgabewerte können null sein und die Rückgabetypdeklaration ist ungültig (PHP 7.1)

Wenn die Parameter- und Rückgabewerttypen null sein können, wird dem Typ Folgendes vorangestellt Eine Fragezeichen-Änderung (?) kann das Problem von Nullwerten lösen (steht nicht in Konflikt mit Standardparametern); die Typdeklaration fügt iterierbare Werte hinzu und unterstützt auch Rückgabewerte vom Typ „void“. Zum Beispiel:

function getModel(?int $id) : ?Foo {
    if ($id !== null) {
        $this->_model = xxxx;
    } else {
        $this->_model = yyyy;
    }
    return $this->_model;
}
// 调用
$foo->getModel(null);
$foo->getModel(100);
// 函数声明了参数并且没有提供默认参数,调用时不传入参数会引发错误
// 将函数声明改成 getModel(?int $id = 100) {},可以不传参数
$foo->getModel();
Nach dem Login kopieren

Wenn der Rückgabewert der Funktion void ist, kann der Funktionskörper nichts zurückgeben (die Schreibweise return void; ist ebenfalls falsch!), oder die return-Anweisung kann weggelassen werden.

function test(array $arr) : void {
    if (!count($arr) {
        return;
    }
    // 不要return;
    array_walk($arr, function ($elem) {xxxx});
}
Nach dem Login kopieren

Wenn wir auf die oben genannten historischen Änderungen zurückblicken, können wir sehen, dass die Funktionstypdeklaration in PHP 7.1 sehr vollständig war (obwohl sie in der Praxis nicht oft verwendet wird). Beachten Sie, dass es in dem Artikel um Parameter- und Rückgabewerttypdeklarationen geht. PHP garantiert nicht, dass die Parametertypen während des Betriebs unverändert bleiben. Das heißt, der folgende Code ist zulässig:

function foo(array $arr) : array {
    // change $arr from array to int
    $arr = 3;
    return [];
}
Nach dem Login kopieren

Aus dieser Sicht ist PHP dies Da es sich immer noch um eine schwach typisierte Sprache handelt, kann keine statische Kompilierung durchgeführt werden.

Lassen Sie uns über die Fallstricke in der Praxis sprechen. Laut offizieller Dokumentation sind die verfügbaren Typen für Funktionsparameter- und Rückgabewerttypdeklarationen:

● Klasse/Schnittstelle

● self, das nur in seinen eigenen Methoden verwendet werden kann

● Array

● Bool

● Callable

● Int

● Float

● String

● iterierbar

● void (wird nur für Rückgabewert verwendet)

Beachten Sie, dass die Liste keine booleschen und doppelten Typen enthält! Sofern Sie diese beiden Typen nicht definieren, ist es falsch, sie in Parametern und Rückgabewerten zu verwenden!

Hier ist PHP auch etwas schmerzhaft. Die beiden Schlüsselwörter double und float sind im normalen Gebrauch nahezu identisch. Doubleval ist beispielsweise ein Alias ​​von floatval, is_double ist ein Alias ​​von is_float und (double) und (float) haben bei der Konvertierung die gleiche Wirkung. Bei der Verwendung in Typdeklarationen ist es jedoch anders. Die gleiche Situation tritt bei bool und boolean auf.

Zusammenfassung

Derzeit ist die stabile Version von PHP 7.2 veröffentlicht. Es wird empfohlen, in neuen Projekten so oft wie möglich PHP 7.1 und nachfolgende Versionen zu verwenden. Um klaren und wartbaren Code zu schreiben, werden deklarative Typen empfohlen. Es wird empfohlen, Nullwerte nur für Referenztypen oder Zeichenfolgen zu verwenden und Nullwerte nicht für Skalartypparameter wie int/float zu verwenden. Versuchen Sie, func_get_argc und andere Funktionen nicht zu verwenden, es sei denn, dies ist erforderlich.

Das obige ist der detaillierte Inhalt vonZusammenfassung der PHP-Funktionstypdeklaration. 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)

Wie kann der Lazy-Loading-Effekt von Bildern durch PHP-Funktionen optimiert werden? Wie kann der Lazy-Loading-Effekt von Bildern durch PHP-Funktionen optimiert werden? Oct 05, 2023 pm 12:13 PM

Wie kann der Lazy-Loading-Effekt von Bildern durch PHP-Funktionen optimiert werden? Mit der Entwicklung des Internets nimmt die Anzahl der Bilder auf Webseiten zu, was die Seitenladegeschwindigkeit unter Druck setzt. Um die Benutzererfahrung zu verbessern und die Ladezeit zu verkürzen, können wir die Bild-Lazy-Loading-Technologie verwenden. Das verzögerte Laden von Bildern kann das Laden von Bildern verzögern. Bilder werden nur geladen, wenn der Benutzer zum sichtbaren Bereich scrollt, was die Ladezeit der Seite verkürzen und das Benutzererlebnis verbessern kann. Beim Schreiben von PHP-Webseiten können wir den Lazy-Loading-Effekt von Bildern optimieren, indem wir einige Funktionen schreiben. Details weiter unten

Wie kann die Speichernutzung durch PHP-Funktionen reduziert werden? Wie kann die Speichernutzung durch PHP-Funktionen reduziert werden? Oct 05, 2023 pm 01:45 PM

So reduzieren Sie die Speichernutzung durch PHP-Funktionen. Bei der Entwicklung ist die Speichernutzung ein sehr wichtiger Gesichtspunkt. Wenn in einem Programm viel Speicher verwendet wird, kann es zu Verlangsamungen oder sogar Programmabstürzen kommen. Daher ist die vernünftige Verwaltung und Reduzierung der Speichernutzung ein Thema, auf das jeder PHP-Entwickler achten sollte. In diesem Artikel werden einige Methoden zur Reduzierung der Speichernutzung durch PHP-Funktionen vorgestellt und spezifische Codebeispiele als Referenz für die Leser bereitgestellt. Verwenden Sie die Funktion unset(), um Variablen in PHP freizugeben. Wenn eine Variable nicht mehr benötigt wird, verwenden Sie

Einführung in die PHP-Funktion – curl_multi_getcontent(): Den Inhalt einer cURL-Sitzung abrufen Einführung in die PHP-Funktion – curl_multi_getcontent(): Den Inhalt einer cURL-Sitzung abrufen Jul 26, 2023 pm 03:01 PM

Einführung in die PHP-Funktion – curl_multi_getcontent(): Den Inhalt einer cURL-Sitzung abrufen. Bei der PHP-Entwicklung müssen wir häufig Daten von anderen Servern über das Netzwerk anfordern. Und cURL (ClientURL) ist eine leistungsstarke PHP-Erweiterungsbibliothek, die für die Netzwerkkommunikation in PHP verwendet wird. cURL bietet eine Reihe von Funktionen, darunter curl_multi_getcontent (), mit der der Inhalt einer cURL-Sitzung abgerufen wird.

PHP veraltet: Funktion ereg_replace() ist veraltet – Lösung PHP veraltet: Funktion ereg_replace() ist veraltet – Lösung Aug 18, 2023 am 10:48 AM

PHPDeprecated: Functionereg_replace()isdeprecated-Solution Bei der Entwicklung in PHP stoßen wir oft auf das Problem, dass einige Funktionen als veraltet deklariert werden. Das bedeutet, dass diese Funktionen in den neuesten PHP-Versionen möglicherweise entfernt oder ersetzt werden. Ein häufiges Beispiel ist die Funktion ereg_replace(). ereg_replace

Zusammenfassung der Methoden zur Implementierung von Bildbearbeitungs- und Verarbeitungsfunktionen mithilfe von PHP-Bildverarbeitungsfunktionen Zusammenfassung der Methoden zur Implementierung von Bildbearbeitungs- und Verarbeitungsfunktionen mithilfe von PHP-Bildverarbeitungsfunktionen Nov 20, 2023 pm 12:31 PM

PHP-Bildverarbeitungsfunktionen sind eine Reihe von Funktionen, die speziell zum Verarbeiten und Bearbeiten von Bildern verwendet werden. Sie bieten Entwicklern umfangreiche Bildverarbeitungsfunktionen. Mithilfe dieser Funktionen können Entwickler Vorgänge wie Zuschneiden, Skalieren, Drehen und Hinzufügen von Wasserzeichen zu Bildern implementieren, um unterschiedliche Bildverarbeitungsanforderungen zu erfüllen. Zunächst werde ich vorstellen, wie PHP-Bildverarbeitungsfunktionen zum Implementieren der Bildzuschneidefunktion verwendet werden. PHP stellt die Funktion imagecrop() zur Verfügung, mit der Bilder zugeschnitten werden können. Durch Übergabe der Koordinaten und der Größe des Zuschneidebereichs können wir das Bild zuschneiden

Einführung in PHP-Funktionen: Funktion strtr() Einführung in PHP-Funktionen: Funktion strtr() Nov 03, 2023 pm 12:15 PM

Einführung in die PHP-Funktion: Funktion strtr() In der PHP-Programmierung ist die Funktion strtr() eine sehr nützliche Funktion zum Ersetzen von Zeichenfolgen. Es wird verwendet, um bestimmte Zeichen oder Zeichenfolgen in einer Zeichenfolge durch andere Zeichen oder Zeichenfolgen zu ersetzen. In diesem Artikel wird die Verwendung der Funktion strtr() vorgestellt und einige spezifische Codebeispiele gegeben. Die grundlegende Syntax der Funktion strtr() lautet wie folgt: strtr(string$str, array$replace) wobei $str das ursprüngliche Wort ist, das ersetzt werden soll.

Vergleich von PHP-Funktionen mit Funktionen in anderen Sprachen Vergleich von PHP-Funktionen mit Funktionen in anderen Sprachen Apr 10, 2024 am 10:03 AM

PHP-Funktionen weisen Ähnlichkeiten mit Funktionen in anderen Sprachen auf, verfügen aber auch über einige einzigartige Funktionen. Syntaktisch werden PHP-Funktionen mit function, JavaScript mit function und Python mit def deklariert. In Bezug auf Parameter und Rückgabewerte akzeptieren PHP-Funktionen Parameter und geben einen Wert zurück. Auch JavaScript und Python verfügen über ähnliche Funktionen, die Syntax ist jedoch unterschiedlich. Was den Umfang betrifft, haben alle Funktionen in PHP, JavaScript und Python einen globalen oder lokalen Geltungsbereich. Auf globale Funktionen kann von überall aus zugegriffen werden, und auf lokale Funktionen kann nur innerhalb ihres Deklarationsumfangs zugegriffen werden.

Wie performant sind PHP-Funktionen? Wie performant sind PHP-Funktionen? Apr 18, 2024 pm 06:45 PM

Die Leistung verschiedener PHP-Funktionen ist entscheidend für die Anwendungseffizienz. Zu den Funktionen mit besserer Leistung gehören echo und print, während Funktionen wie str_replace, array_merge und file_get_contents eine langsamere Leistung aufweisen. Beispielsweise wird die Funktion str_replace zum Ersetzen von Zeichenfolgen verwendet und weist eine mäßige Leistung auf, während die Funktion sprintf zum Formatieren von Zeichenfolgen verwendet wird. Die Leistungsanalyse zeigt, dass die Ausführung eines Beispiels nur 0,05 Millisekunden dauert, was beweist, dass die Funktion eine gute Leistung erbringt. Daher kann der kluge Einsatz von Funktionen zu schnelleren und effizienteren Anwendungen führen.

See all articles