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

PHPでのメソッドのオーバーロードとは何ですか?


メソッドオーバーロードは、オブジェクト指向プログラミングの概念であり、複合アプリケーションを簡単に構築するのに役立ちます。関数のオーバーロードまたはメソッドのオーバーロードは、引数として受け入れる入力パラメーターのタイプが互いに異なる、類似した名前の複数のメソッドを作成できるようにする機能です。

上記の概念は他のプログラミング言語には問題なく、静的ポリモーフィック、つまりメソッドのオーバーロードと呼ばれます。

例を通して理解しましょう。

<?php
   class machine {
      function doTask($var1){
         return $var1;
      }
      function doTask($var1,$var2){
         return $var1 * $var1 ;
      }
   }
   $task1 = new machine();
   $task1->doTask(5,10);
?>

出力:

Error

説明:

phpはこのメソッドを2回宣言したと言うので、これはエラーを生成します。
しかし、他のプログラミング言語によると、doTask($ var1)とdoTask($ var1、$ var2)はオーバーロードされたメソッドです。後者を呼び出すには、2つのパラメーターを渡す必要がありますが、前者は1つのパラメーターのみを必要とします。
したがって、この動作、つまりコーディング時に関数を呼び出すという決定は、静的ポリモーフィック、つまりメソッドのオーバーロードとして知られています。

PHP5に関連するメソッドのオーバーロードを実現する方法について説明しましょう。PHPの場合、メソッドのオーバーロードを実現するには、PHPの魔法のメソッド__call()を利用する必要があります。

PHPでは、オーバーロードとは、メソッドの動作が入力パラメーターに応じて動的に変化することを意味します。このチュートリアルでは、それらの認識を理解します。 __call()メソッドについて説明しましょう。

__ call():

クラスが__call()を実行する場合、そのクラスのオブジェクトが存在しないメソッドで呼び出されると、そのメソッドの代わりに__call()が呼び出されます。

例を使ってメソッドのオーバーロードを理解しましょう。

<?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.426
48

説明:

ここで、area()メソッドは動的に作成され、魔法のメソッド__call()を使用して実行され、オブジェクトとしてのパラメーターの受け渡しに応じて動作が変化します。


  1. PHPファイルとは何ですか?

    拡張子が.PHPのファイルは、ハイパーテキストプリプロセッサコードを含むPHPソースコードファイルです。これらは通常、Webサーバーで実行されているPHPエンジンからHTMLを生成するWebページファイルとして使用されます。 PHPエンジンがコードから作成するHTMLコンテンツは、Webブラウザーに表示されるものです。 WebサーバーはPHPコードが実行される場所であるため、PHPページにアクセスしてもコードにアクセスできませんが、代わりにサーバーが生成するHTMLコンテンツが提供されます。 一部のPHPソースコードファイルは、.PHTML、PHP3、PHP4、PHP5、PHP7、PHP

  2. C#のオーバーロードとは何ですか?

    C#は、静的ポリモーフィズムを実装するための2つの手法を提供します- 関数のオーバーロード 演算子のオーバーロード 関数のオーバーロード 名前は同じでパラメータが異なる2つまたは3つ以上のメソッドは、C#で関数のオーバーロードと呼ばれるものです。 C#での関数のオーバーロードは、引数の数と引数のデータ型を変更することで実行できます。 数値の乗算を出力する関数があるとすると、オーバーロードされたメソッドの名前は同じですが、引数の数が異なります- public static int mulDisplay(int one, int two) { } public static int mu