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

黄舟
Libérer: 2023-03-07 06:24:01
original
1236 Les gens l'ont consulté

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, ......){
    //....}
Copier après la connexion

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);//没问题
?>
Copier après la connexion

Résultat en cours d'exécution :

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

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!