ホームページ  >  記事  >  バックエンド開発  >  PHP の関数カバレッジと関数のオーバーロードとは何ですか

PHP の関数カバレッジと関数のオーバーロードとは何ですか

藏色散人
藏色散人オリジナル
2019-01-18 16:09:284229ブラウズ

関数のオーバーロードと上書き (書き換えとも呼ばれます) は、PHP の OOP (オブジェクト指向) 機能です。関数のオーバーロードでは、複数の関数が同じメソッド名を持つことができますが、パラメーターの数や型が異なります。ただし、関数をオーバーライドする場合、複数の関数が同じメソッド名とパラメータ数を持つことになります。

PHP の関数カバレッジと関数のオーバーロードとは何ですか

関数のオーバーロード: 関数のオーバーロードには同じ関数名が含まれており、パラメーターの数と種類に応じて異なるタスクを実行します。

たとえば、半径を指定してある形状の面積を見つけるには、高さと幅が指定されている場合は円の面積を返し、次に長方形の領域とその他の領域を返す必要があります。与えられた。他の OOP 言語と同様に、関数のオーバーロードはネイティブ メソッドでは実行できません。

PHP では、関数のオーバーロードはマジック メソッド __call() を利用して行われます。この関数は関数名とパラメータを受け取ります。

関数オーバーロードの例:

<?php 
// 说明:PHP程序说明函数。
// PHP中的重载
//创建一个类型为shape的类
class shape { 
      
   // __call() 是一个魔术方法
   //函数名和参数
    function __call($name_of_function, $arguments) { 
              
        // 它将匹配函数名
        if($name_of_function == &#39;area&#39;) { 
              
            switch (count($arguments)) { 
                      
                // 如果只有一个参数
                //圆的面积
                case 1: 
                    return 3.14 * $arguments[0]; 
                          
                // 如果有两个参数,则面积为矩形;
                case 2: 
                    return $arguments[0]*$arguments[1]; 
            } 
        } 
    } 
} 
      
//声明Shape类型对象
$s = new Shape; 
      
echo($s->area(2)); 
echo "<br>"; 
      
// 调用矩形的area方法
echo ($s->area(4, 2)); 
?>

出力:

6.28
8

関数オーバーライド: 関数オーバーライドとその他の OOP プログラミング言語同じです。関数のオーバーライドでは、親クラスと子クラスの関数名とパラメーターの数が同じである必要があります。これは、子クラスの親メソッドを置き換えるために使用されます。オーバーライドの目的は、親クラス メソッドの動作を変更することです。同じ名前と同じパラメータを持つ 2 つのメソッドはオーバーライドと呼ばれます。

関数カバレッジ (書き換え) の例:

<?php
//PHP程序实现
//函数覆盖
//这是父类
class P {

    // 父类函数demo
    function demo() {
        echo "Parent";
    }
}

// 这是子类
class C extends P {

    // 覆盖demo方法
    function demo() {
        echo "<br>Child";
    }
}


$p = new P;

$c= new C;

// 打印parent
$p->demo();

// 打印child
$c->demo();
?>

出力:

Parent
Child

この記事は、PHP における関数カバレッジと関数のオーバーロードについて説明します。困っている友達に役立つことを願っています!

以上がPHP の関数カバレッジと関数のオーバーロードとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。