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

不言
Freigeben: 2023-04-05 18:48:01
nach vorne
2435 Leute haben es durchsucht

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
Nach dem Login kopieren

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,是否为男孩:是
Nach dem Login kopieren

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;;
    }
}
Nach dem Login kopieren

. 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
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:segmentfault.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage