Heim  >  Artikel  >  Backend-Entwicklung  >  Was sind PHP-Typbeschränkungen? Einführung und Verwendung von PHP-Typbeschränkungen

Was sind PHP-Typbeschränkungen? Einführung und Verwendung von PHP-Typbeschränkungen

不言
不言Original
2018-08-08 17:14:582444Durchsuche

Die sogenannte Typbeschränkung bedeutet, dass beim Definieren einer Variablen deren Typ angegeben werden muss und die Variable in Zukunft nur Daten dieses Typs speichern kann. In diesem Artikel stelle ich Ihnen die Einschränkungen und Verwendung von PHP-Typen vor.

Einführung in PHP-Typbeschränkungen

PHP ist eine schwach typisierte Sprache. Ihr Merkmal besteht darin, dass für eine Variable kein Typ angegeben werden muss Jeder Typ kann anschließend gespeichert werden. Dies ist natürlich auch einer der Schlüsselpunkte für eine schnelle Entwicklung mit PHP. Aber seit PHP5 können wir Typeinschränkungen in Funktions-(Methoden-)Parametern verwenden.

Die Parameter der Funktion können im folgenden Bereich angegeben werden:

1. Es muss ein Objekt sein (geben Sie den Namen der Klasse im Funktionsprototyp an); >2. Schnittstelle;

3. Array (ab PHP 5.1)

4.

5. Wenn Sie NULL als Standardwert des Parameters verwenden, können Sie beim Aufruf der Funktion weiterhin NULL als tatsächlichen Parameter verwenden.

6. Wenn eine Klasse oder Schnittstelle eine Typbeschränkung angibt, gilt dies auch für alle ihre Unterklassen oder Implementierungen.

Hinweis

: Vor PHP7 konnten Typeinschränkungen nicht für Skalartypen wie int oder string verwendet werden. Auch Eigenschaften sind nicht erlaubt.

Verwendung von PHP-Typbeschränkungen:


Das Folgende ist das offizielle Beispiel:

<?php
//如下面的类
class MyClass
{
    /**
     * 测试函数
     * 第一个参数必须为 OtherClass 类的一个对象
     */
    public function test(OtherClass $otherclass) {
        echo $otherclass->var;
    }


    /**
     * 另一个测试函数
     * 第一个参数必须为数组 
     */
    public function test_array(array $input_array) {
        print_r($input_array);
    }
}

    /**
     * 第一个参数必须为递归类型
     */
    public function test_interface(Traversable $iterator) {
        echo get_class($iterator);
    }
    
    /**
     * 第一个参数必须为回调类型
     */
    public function test_callable(callable $callback, $data) {
        call_user_func($callback, $data);
    }
}

// OtherClass 类定义
class OtherClass {
    public $var = 'Hello World';
}
?>

Parameter von Funktionsaufrufen und definierte Parametertypen In Im Falle einer Inkonsistenz wird ein abfangbarer schwerwiegender Fehler ausgegeben.

<?php
// 两个类的对象
$myclass = new MyClass;
$otherclass = new OtherClass;

// 致命错误:第一个参数必须是 OtherClass 类的一个对象
$myclass->test('hello');

// 致命错误:第一个参数必须为 OtherClass 类的一个实例
$foo = new stdClass;
$myclass->test($foo);

// 致命错误:第一个参数不能为 null
$myclass->test(null);

// 正确:输出 Hello World 
$myclass->test($otherclass);

// 致命错误:第一个参数必须为数组
$myclass->test_array('a string');

// 正确:输出数组
$myclass->test_array(array('a', 'b', 'c'));

// 正确:输出 ArrayObject
$myclass->test_interface(new ArrayObject(array()));

// 正确:输出 int(1)
$myclass->test_callable('var_dump', 1);
?>

Typbeschränkungen werden nicht nur in Klassenmitgliedsfunktionen verwendet, sondern auch in Funktionen:

<?php
// 如下面的类
class MyClass {
    public $var = &#39;Hello World&#39;;
}

/**
 * 测试函数
 * 第一个参数必须是 MyClass 类的一个对象
 */
function MyFunction (MyClass $foo) {
    echo $foo->var;
}

// 正确
$myclass = new MyClass;
MyFunction($myclass);
?>

Typbeschränkungen erlauben NULL-Werte:

<?php

/* 接受 NULL 值 */
function test(stdClass $obj = NULL) {

}

test(NULL);
test(new stdClass);

?>

PHP7

Skalare Typdeklaration (PHP 7)

Skalare Typdeklaration hat zwei Modi: obligatorisch (Standard) und strikt.

Die folgenden Typparameter können jetzt verwendet werden (ob im erzwungenen Modus oder im strengen Modus):


1. String (string),

2

3. Gleitkommazahl (float),

4.

Sie erweitern andere in PHP5 eingeführte Typen: Klassennamen, Schnittstellen, Arrays und Rückruftypen.

<?php
// 强制模式
function sumOfInts(int ...$ints)
{
     return array_sum($ints);
}
 
var_dump(sumOfInts(2, '3', 4.1));
Das obige Beispiel gibt Folgendes aus: int(9)

Um den strikten Modus zu verwenden, muss eine Deklarationsanweisung oben in der Datei platziert werden. Dies bedeutet, dass Skalare strikt auf Dateibasis als konfigurierbar deklariert sind. Diese Direktive wirkt sich nicht nur auf die Typdeklaration von Parametern aus, sondern auch auf die Rückgabewertdeklaration von Funktionen.

Empfohlene verwandte Artikel:

Einführung in Typeinschränkungen in PHP, Einführung in PHP-Typeinschränkungen

Austausch von Codeideen für Typeinschränkungen in PHP

So verwenden Sie Typbeschränkungen, um PHP-Funktionstypen einzuschränken

Das obige ist der detaillierte Inhalt vonWas sind PHP-Typbeschränkungen? Einführung und Verwendung von PHP-Typbeschränkungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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