Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in PHP-Typbeschränkungen (mit Code)

Detaillierte Einführung in PHP-Typbeschränkungen (mit Code)

不言
不言nach vorne
2019-04-02 11:41:342375Durchsuche

Dieser Artikel bietet Ihnen eine detaillierte Einführung in PHP-Typbeschränkungen (mit Code). Freunde in Not können darauf verweisen.

Einführung: Die sogenannte Typbeschränkung bedeutet, dass beim Definieren einer Variablen deren Typ angegeben werden muss und die Variable in Zukunft nur noch Daten dieses Typs speichern kann. Obwohl PHP eine schwach typisierte Sprache ist, unterstützt es bereits Typbeschränkungen in PHP 5, einschließlich Objekten, Schnittstellen und Arrays. Es unterstützt Skalartypbeschränkungen nach PHP 7. Hier sind einige Beispiele.

Skalartyp, Array

Geben Sie den Typ im Parameter an. Wenn er inkonsistent ist, wird ein abfangbarer schwerwiegender Fehler

<?php

/**
 * 数组类型约束
 * @param array $arr
 */
function printArray(array $arr)
{
    echo implode(&#39;,&#39;, $arr);
}

printArray(array(1, 2, 3));// 1,2,3
printArray(&#39;1&#39;);// Fatal error: Uncaught TypeError: Argument 1 passed to printArray() must be of the type array, string given, called in D:\WWW\test.php on line 13 and defined in D:\WWW\test.php:7 Stack trace: #0 D:\WWW\test.php(13): printArray(&#39;1&#39;) #1 {main} thrown in D:\WWW\test.php on line 7

ausgegeben oben gilt das Gleiche für Skalartypen

<?php

/**
 * 标量类型约束
 * @param string $name
 * @param int $age
 * @param float $height
 * @param bool $isBoy
 */
function sayInfo(string $name, int $age, float $height, bool $isBoy)
{
    echo &#39;姓名:&#39; . $name . &#39;,年龄:&#39; . $age . &#39;,身高:&#39; . $height . &#39;,是否为男孩:&#39; . ($isBoy ? &#39;是&#39; : &#39;否&#39;);
}

sayInfo(&#39;tom&#39;, 12, 134.5, true);// 姓名:tom,年龄:12,身高:134.5,是否为男孩:是

Objekt, Schnittstelle

Typbeschränkungen können auch als Objekte oder Schnittstellen angegeben werden. Definieren Sie zunächst eine Human-Schnittstelle, und die beiden Klassen Boy und Girl implementieren jeweils die Schnittstelle

<?php

/**
 * 接口
 * Interface Human
 */
interface Human
{
    public function say();

    public function run();
}

/**
 * 实现 Human 接口
 * Class Boy
 */
class Boy implements Human
{
    public function say()
    {
        echo &#39;a boy say&#39;;
    }

    public function run()
    {
        echo &#39;a boy run&#39;;
    }
}

/**
 * 实现 Human 接口
 * Class Girl
 */
class Girl implements Human
{
    public function say()
    {
        echo &#39;a girl say&#39;;
    }

    public function run()
    {
        echo &#39;a girl run&#39;;
    }
}

. Erstellen Sie dann eine neue Klasse, um

<?php

include &#39;./human.php&#39;;

class Action
{
    /**
     * Boy 对象类型约束
     * @param Boy $boy
     */
    public function boySay(Boy $boy)
    {
        $boy->say();
    }

    /**
     * Girl 对象类型约束
     * @param Girl $girl
     */
    public function girlSay(Girl $girl)
    {
        $girl->say();
    }

    /**
     * Human 接口类型约束
     * @param Human $obj
     */
    public function humanRun(Human $obj)
    {
        $obj->run();
    }
}

$obj = new Action();
$obj->boySay(new Boy());// a boy say
echo '<br />';
$obj->girlSay(new Girl());// a girl say
echo '<br />';
$obj->humanRun(new Boy());// a boy run
echo '<br />';
$obj->humanRun(new Girl());// a girl run

zu testen, wenn die Typbeschränkung a ist spezifisches ObjektBoy oder Girl, nur das angeforderte Objekt kann übergeben werden. Wenn es sich bei der Typbeschränkung um eine Schnittstelle Human handelt, können Sie die Klasse Boy oder Girl übergeben, die die Schnittstelle implementiert.

[Verwandte Empfehlungen: PHP-Video-Tutorial]

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in PHP-Typbeschränkungen (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen