PhpStormでmethodを分割する方法

  • 13
    Like
  • 0
    Comment
More than 1 year has passed since last update.

はじめに

長いメソッドを複数のメソッドに分割する事ってよくありますよね?
引数が多かったりするとなかなか大変だったりしますが、
PhpStormなら簡単にできます!

Before

こんなメソッドがあるとします。


class Hoge
{
    function a($data)
    {
        $test1 = 'test';
        $test2 = 'test';
        $test3 = 'test';
        foreach ($data as $k => $v) {
            $data[$k]['a'] = $test1;
            $data[$k]['b'] = $test2;
            $data[$k]['c'] = $test3;
        }
        return $data;
    }
}

そしてここを別メソッドに切り出したいとします。

        foreach ($data as $k => $v) {
            $data[$k]['a'] = $test1;
            $data[$k]['b'] = $test2;
            $data[$k]['c'] = $test3;
        }

操作方法

  1. 切り出したい箇所を選択
  2. 右クリック->Refactor->Extract->Method (alt + command + M)
    Fullscreen_12_18_15__5_12_PM.png
  3. メソッド名を入力し、「Refactor」
    Extract_Method_and_Circle_php_-_goalous2_-____repos_goalous2_.png

After


class Hoge
{
    function a($data)
    {
        $test1 = 'test';
        $test2 = 'test';
        $test3 = 'test';
        $data = $this->b($data, $test1, $test2, $test3);
        return $data;
    }

    /**
     * @param $data
     * @param $test1
     * @param $test2
     * @param $test3
     *
     * @return mixed
     */
    public function b($data, $test1, $test2, $test3)
    {
        foreach ($data as $k => $v) {
            $data[$k]['a'] = $test1;
            $data[$k]['b'] = $test2;
            $data[$k]['c'] = $test3;
        }
        return $data;
    }
}

おわりに

PhpStormならリファクタリングがものすごい楽です。
他にもメソッド名の一括変更や引数の順番の変更とか色んな事ができます。
是非使ってみてください。