phpのmethod_exists()関数で自分自身にメソッドがあるかどうかを調べるには

2013/01/23

P1190056.JPG

method_exists()関数は、第1引数にオブジェクトのインスタンスまたはクラス名、第2引数にメソッド名を指定するのだけれど、クラス内で自分自身にメソッドがあるかどうかを調べる方法がよく分からなかったので整理した。

引数に使えるのは以下。

  • 名前そのもの
  • __CLASS__
  • get_class()
  • get_called_class()

例えばこんな感じ。

class foo
{
    public static function bar1() {
        if (method_exists('foo', 'bar1')) {
            echo __CLASS__ . "::bar1()\n";
        }
    }

    public static function bar2() {
        if (method_exists(__CLASS__, 'bar2')) {
            echo __CLASS__ . "::bar2()\n";
        }
    }

    public static function bar3() {
        if (method_exists(get_class(), 'bar3')) {
            echo get_class() . "::bar3()\n";
        }
    }

    public static function bar4() {
        if (method_exists(get_called_class(), 'bar4')) {
            echo get_called_class() . "::bar4()\n";
        }
    }
}

class foo2 extends foo { }

これで、呼び出し側で、

foo::bar1();
foo::bar2();
foo::bar3();
foo::bar4();

と呼ぶと、

foo::bar1()
foo::bar2()
foo::bar3()
foo::bar4()

となり、

foo2::bar1();
foo2::bar2();
foo2::bar3();
foo2::bar4();

と呼ぶと、

foo::bar1()
foo::bar2()
foo::bar3()
foo2::bar4()

となる。

きょうのあさごはん

2013/01/23

P1230300.JPG

やなせたかし的カレーパン、紅茶。

大きな開発が佳境でPHPばっかり書いている。作業中BGMはずっとこれ。

CITY DIVE – 一十三十一

良い息、良い声。

何年か前に見た、大貫妙子と一十三十一が、林立夫のドラムをバックに、シュガー・ベイブの「いつも通り」を歌っている動画がもう一度見たい。どこ行ってもうたんや。。

きょうのあさごはん

2013/01/22

P1220290.JPG

かしわのうどん。麺である。

麺といえば、去年の10月にホーチミンへ行ったのだけれど、1泊しかしていないにもかかわらず、どういうわけか全部で7麺食べた。今日は、その中でも特に印象に残ったお店を2軒紹介したい。

(さらに…)

<< 古い記事