Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-objektorientierter, detaillierter Beispielcode für Typeinschränkungen

PHP-objektorientierter, detaillierter Beispielcode für Typeinschränkungen

黄舟
黄舟Original
2017-03-27 09:52:101286Durchsuche

Was ist ein Typ?Einschränkung

Es ist eine Anforderung, dass eine Variable nur eine bestimmte Spezifikation verwenden (akzeptieren, speichern) kann Datentyp; PHP ist eine „schwach typisierte Sprache“ und unterstützt normalerweise keine Typeinschränkungen. Für eine stark typisierte Sprache sind Typeinschränkungen das „Grundmerkmal“.

In PHP werden nur partielle Typeinschränkungen unterstützt

In PHP werden Typeinschränkungen nur für formale Parameter von Funktionen (oder Methoden) unterstützt. Die Form ist wie folgt :

function 方法名( [要求使用的类型] $p1, [要求使用的类型] $p2, ......){
    //....}

Beschreibung:

  1. Beim Definieren einer Funktion (Methode), eines formalen Parameters, Typbeschränkungen kann verwendet werden oder nicht;

  2. Wenn Typbeschränkungen verwendet werden, müssen die entsprechenden tatsächlichen Parameterdaten vom erforderlichen Typ sein;

  3. Typbeschränkungen die verwendet werden können, sind nur in den folgenden Situationen verfügbar:

    1. Array: Array

    2. Objekt: Verwenden Sie den Namen der Klasse, die übergebenen tatsächlichen Parameter müssen eine Instanz der Klasse sein

    3. Schnittstelle: Verwenden Sie den Namen der Schnittstelle, die übergebenen tatsächlichen Parameter müssen eine Implementierungsinstanz der Klasse sein Schnittstelle

<?php
//演示类型约束
interface USB{} //接口
class A{}   //类
class B implements USB{}    //实现了USB接口的类

function f1($p1, array $p2, A $p3, USB $P4){
    echo "<br />没有约束的p1:" . $p1;
    echo "<br />要求是数组的p2:" ;
        print_r($p2);
    echo "<br />要求是类A的对象:";
        var_dump($p3);
    echo "<br />要求是实现实现了USB接口的对象:";
        var_dump($P4);
}

$obj1 = new A();
$obj2 = new B();
$arr = array();

//演示各种形式的函数调用
//f1(1.2, 1, $obj1, $obj2);//报错,第二个参数不是数组类型,Argument 2 passed to f1() must be an array, integer give
//f1(1, $arr, $obj1, $obj1);//报错,第四个参数,Argument 4 passed to f1() must implement interface USB, instance of A given
f1(1.2, $arr, $obj1, $obj2);//没问题
?>

Laufergebnis:

没有约束的p1:1.2
要求是数组的p2:Array ( )
要求是类A的对象:object(A)[1]
要求是实现实现了USB接口的对象:object(B)[2]

Das obige ist der detaillierte Inhalt vonPHP-objektorientierter, detaillierter Beispielcode für Typeinschrä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