Maison  >  Article  >  développement back-end  >  Exemple de code PHP détaillé orienté objet de contraintes de type

Exemple de code PHP détaillé orienté objet de contraintes de type

黄舟
黄舟original
2017-03-27 09:52:101284parcourir

Qu'est-ce qu'un typeContrainte

Il est obligatoire qu'une variable ne puisse utiliser (accepter, stocker) qu'un certain spécifié Type de données ; PHP est un « langage faiblement typé » et ne prend généralement pas en charge les contraintes de type ; par conséquent, pour un langage fortement typé, les contraintes de type sont sa « fonctionnalité de base ».

En PHP, seules les contraintes de type partielles sont supportées

En PHP, les contraintes de type ne sont supportées que sur les paramètres formels des fonctions (ou méthodes). :

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

Description :

  1. Lors de la définition d'une fonction (méthode), d'un paramètre formel, de contraintes de type peut être utilisé ou non ;

  2. Si des contraintes de type sont utilisées, les données de paramètres réelles correspondantes doivent être du type requis

  3. Contraintes de type ; qui peuvent être utilisés ne sont disponibles que dans les situations suivantes :

    1. Tableau : tableau

    2. Objet : utiliser le nom de la classe, les paramètres réels passés doivent être une instance de la classe

    3. Interface : utilisez le nom de l'interface, les paramètres réels passés doivent être une instance d'implémentation de la classe avec ceci interface

<?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);//没问题
?>

Résultat en cours d'exécution :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn