PHPでstaticにしたfunctionから同じクラスの中でstaticにしたfunctionは呼び出せないのでしょうか?undefinedというエラーになってしまったのですが…


//例
class Hoge{
public static function hoge1(){
hoge2();
}

public static function hoge2(){
}
}

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/01/19 12:05:06

回答0件)

回答はまだありません

  • id:tdoi
    単にスコープの問題。
    他のオブジェクト指向言語だと、自分のクラスなどは指定なしで呼び出せるものもありますが、PHPは明示する必要があります。

    Hoge::hoge1の中であっても、

    Hoge::hoge2();

    と記述してHogeクラスのstaticメソッドである、hoge2()を呼び出すことを明示しなければなりません。
    ただ hoge2(); と記述すると、globalスコープのhoge2()関数を呼び出そうとします。

    次の例をみると分かるでしょうか。

    <?php
    function hoge2()
    {
    echo "global hoge2().\r\n";
    }

    class Hoge{
    public static function hoge1(){
    hoge2();
    Hoge::hoge2();
    }
    public static function hoge2(){
    echo 'Hoge::hoge2';
    }
    }
    Hoge::hoge1();
    ?>

    何かの参考になれば。
  • id:a-kuma3
    回答に書けー =)
  • id:koime_ryokutya
    koime_ryokutya 2012/01/12 20:26:19
    ありがとうございます。解決しました!
    ただ、回答に書いて頂かないと質問を終了すると、自動的にキャンセルに記事が消えてしまうのですが・・
  • id:taknt
    放置すれば残るよ。

    http://q.hatena.ne.jp/1322629010

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません