Posted at

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

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

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

こんなコード。

    /**

* @param mixed $offset
* @return Hi
*/

public function offsetGet($offset) {
....
}

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

スクリーンショット 2019-05-22 18.54.48.png

この「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();