PHP オブジェクト指向 - 型制約の詳細なコード例

黄舟
リリース: 2023-03-07 06:24:01
オリジナル
1282 人が閲覧しました

type制約とは

特定の変数が特定の指定されたデータ型のみを使用(受け入れ、保存)できることを要求することです。PHPは「弱い型付け言語」であり、通常はサポートされていません。これは厳密に型指定された言語ですが、型制約はその「基本機能」です。

PHP では、部分的な型制約のみがサポートされます。

PHP では、関数 (またはメソッド) の仮パラメーターで型制約ターゲットのみがサポートされます。 形式は次のとおりです:

function 方法名( [要求使用的类型] $p1, [要求使用的类型] $p2, ......){
    //....}
ログイン後にコピー

説明:

  1. 関数 (メソッド) を定義する場合、仮パラメーターは型制約を使用するかどうかを指定できます。

  2. 型制約を使用する場合、対応する実際のパラメーター データは必須の型である必要があります。使用できる制約は、次の状況でのみ使用できます:


  3. Array: array

    1. Object: クラスの名前を使用し、渡される実際のパラメータはこのクラスのものでなければなりません

    2. のインスタンス
    3. インターフェース: インターフェースの名前を使用し、渡される実際のパラメーターはインターフェースを実装するクラスのインスタンスである必要があります

    4. <?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);//没问题
      ?>
      ログイン後にコピー

      実行結果:

      没有约束的p1:1.2
      要求是数组的p2:Array ( )
      要求是类A的对象:object(A)[1]
      要求是实现实现了USB接口的对象:object(B)[2]
      ログイン後にコピー

      以上がPHP オブジェクト指向 - 型制約の詳細なコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート