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'