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!
-
PHPのis_subclass_of()関数
is_subclass_of()関数は、オブジェクトがその親の1つとしてこのクラスを持っているかどうかをチェックします。 構文 is_subclass_of(object, class, string) パラメータ オブジェクト −テストされたオブジェクト クラス −クラスの名前 文字列 − falseに設定すると、オブジェクトとしての文字列クラス名は許可されません。 戻る is_subclass_of()関数は、オブジェクト「object」が「class」のサブクラスであるクラスに属している場合はTRUEを返し、そうでない場合はFALSEを返します。 以下は例です-
-
PHPのclass_exists()関数
PHPのclass_exists()関数は、クラスが定義されているかどうかをチェックします。クラスが定義済みクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 構文 class_exists(class, autoload) パラメータ クラス −クラスの名前。 自動読み込み −デフォルトで__autoloadを呼び出すかどうか 戻る class_exists()関数は、クラスが定義されたクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 例 以下は例です- <?php if (class_exists('Demo'