PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPでの関数のオーバーロードとオーバーライド


PHPでの関数のオーバーロード

関数のオーバーロードは、引数として受け入れる入力パラメーターのタイプが互いに異なる、類似した名前の複数のメソッドを作成できるようにする機能です。

関数のオーバーロードを実装する例を見てみましょう-

<?php
   class Shape {
      const PI = 3.142 ;
      function __call($name,$arg){
         if($name == 'area')
            switch(count($arg)){
               case 0 : return 0 ;
               case 1 : return self::PI * $arg[0] ;
               case 2 : return $arg[0] * $arg[1];
            }
      }
   }
   $circle = new Shape();
   echo $circle->area(3);
   $rect = new Shape();
   echo $rect->area(8,6);
?>

出力

これにより、次の出力が生成されます-

9.42648

PHPでの関数のオーバーライド

関数のオーバーライドでは、親クラスと子クラスは同じ関数名と引数の数を持ちます

関数のオーバーライドを実装する例を見てみましょう-

<?php
   class Base {
      function display() {
         echo "\nBase class function declared final!";
      }
      function demo() {
         echo "\nBase class function!";
      }
   }
   class Derived extends Base {
      function demo() {
         echo "\nDerived class function!";
      }
   }
   $ob = new Base;
   $ob->demo();
   $ob->display();
   $ob2 = new Derived;
   $ob2->demo();
   $ob2->display();
?>

出力

これにより、次の出力が生成されます-

Base class function!
Base class function declared final!
Derived class function!
Base class function declared final!

  1. PHPのis_subclass_of()関数

    is_subclass_of()関数は、オブジェクトがその親の1つとしてこのクラスを持っているかどうかをチェックします。 構文 is_subclass_of(object, class, string) パラメータ オブジェクト −テストされたオブジェクト クラス −クラスの名前 文字列 − falseに設定すると、オブジェクトとしての文字列クラス名は許可されません。 戻る is_subclass_of()関数は、オブジェクト「object」が「class」のサブクラスであるクラスに属している場合はTRUEを返し、そうでない場合はFALSEを返します。 以下は例です-

  2. PHPのclass_exists()関数

    PHPのclass_exists()関数は、クラスが定義されているかどうかをチェックします。クラスが定義済みクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 構文 class_exists(class, autoload) パラメータ クラス −クラスの名前。 自動読み込み −デフォルトで__autoloadを呼び出すかどうか 戻る class_exists()関数は、クラスが定義されたクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 例 以下は例です- <?php if (class_exists('Demo'