ArrayAccessでコード補完(PhpStormネタ)


ArrayAccessを使うとオブジェクトを配列のように使えます。

その際、いくつかメソッドを追加するのですが、返り値を指定することができます。
こんなコード。

    /**
     * @param mixed $offset
     * @return Hi
     */
    public function offsetGet($offset) {
        ....
    }

するとコード補完ができた。

この「e()」が補完したいメソッド。

なお、$thisではだめだった。
PhpStormのバージョンは2019.1を利用。

コード

一応、クラスとコード。

class Hi implements ArrayAccess
{
    private $hi = '';
    public function e() {
        return $this->hi;
    }
    /**
     * @param mixed $offset
     * @return Hi
     */
    public function offsetGet($offset) {
        $this->hi .= $offset;
        return $this;
    }
    public function offsetSet($offset, $value) {}
    public function offsetUnset($offset) {}
    public function offsetExists($offset) {
        return false;
    }
}

$hi = new Hi();
echo $hi['h']['i']->e();