静的メソッドの遅延バインド
890 ワード
例:
親クラスに静的メソッドa,b,子クラスに静的メソッドaを含む
親クラスのbメソッドは、自身のaメソッドを呼び出し、この場合、子クラスが親クラスのbメソッドを呼び出すと、
self::a()は親自身を呼び出すaメソッドなのか,それとも子自身を呼び出すaメソッドなのか
答え:selfは親クラスのaメソッドを呼び出します
親クラスには静的メソッドcが追加され、static::a()を使用します.このとき呼び出されるのは親クラスですか、それとも子クラスのaメソッドですか.
答え:staticが呼び出すのはサブクラスのaメソッドです
親クラスに静的メソッドa,b,子クラスに静的メソッドaを含む
親クラスのbメソッドは、自身のaメソッドを呼び出し、この場合、子クラスが親クラスのbメソッドを呼び出すと、
self::a()は親自身を呼び出すaメソッドなのか,それとも子自身を呼び出すaメソッドなのか
答え:selfは親クラスのaメソッドを呼び出します
親クラスには静的メソッドcが追加され、static::a()を使用します.このとき呼び出されるのは親クラスですか、それとも子クラスのaメソッドですか.
答え:staticが呼び出すのはサブクラスのaメソッドです
<?php
class Test
{
public static function a()
{
echo ' a <br/>';
}
public static function b()
{
self::a();
echo ' b <br/>';
}
public static function c()
{
static::a();// c , static::a(), a()
}
}
class child_test extends Test
{
public static function a()
{
echo ' a <br/>';
}
}
child_test::b();
child_test::c();
?>