static::doSomething()で呼ぶ必要があるのだと勘違いしてた。
<?php
class Hoge {
static function foo() {
//この中で$thisは使えない
echo 'Hoge::foo';
}
function hoo() {
$this->foo();
}
}
$hoge = new Hoge;
$hoge->foo(); //一切エラーは発生しない
$hoge->hoo(); //一切エラーは発生しない
staticにすると$thisが使えなくなり、プロパティの読み書きもできず、かなり制約がきつくなる。むしろ積極的に使うと、インスタンスの状態変更を行っていないことを明示できて読みやすいコードになるかも。