ぶろぐ

日記です

あまり大きな声では言えないけど


# 昨日はじめてコンストラクタ使いました

class Takuan {

  protected $hoge; // private とかでもいいの?
  // private にすると子クラスから呼べなくなった。

  public function __construct() {
    $this->hoge = new FooBar();
  }

  public function fooBar() {
    $this->hoge->ultraMethod();
  }

  public function hoge() {
    echo "hogehoge";
  }

}

protected $hoge = new FooBar();
とかできないっぽい。
# あれ、そうだっけ?
やぱそうだ
protected $hoge = "foobar";
とかはできるけど、newするとかはできない。
処理が入る?的なのはコンストラクタに書かないといけないっぽいなー。

ついでに

インスタンス化しなくても、下記の構文でメソッド呼べるっぽい
Takuan::hogehoge();
JavaのStaticメソッドっぽく使うのいいかもー
HogeUtils::h("うぇーい");
などなど
ちなみに
Takuan::fooBar();

  • Fatal error: Using $this when not in object context in hogehoge.php on line 123

ってでます。
newしてないからインスタンス生成されてなくて、$thisとかいないっすよーという感じだと思う。
多分、コンストラクタもすっ飛ばしている。
結構、PHPも面白いっすよね。
# 沢山使ったことある言語てPHPJavaJavaScriptだからそれが好きなので、面白いと思うだけだけどw
rubyやりたいっすなー