LoginSignup
4
1

More than 5 years have passed since last update.

PhpStorm でファイル作成時にコードテンプレート使うと少し捗るよ (IntelliJ とかも同じはず。)

Posted at

PhpStorm (IntelliJとかも) に、 Project Tree などから、コンテキストメニューを呼び出し、そこから指定のファイルを作成する機能があります。(あるいは、 cmd + n)

こんなやつ。

スクリーンショット 2019-03-07 12.24.09.png

例えば、 "PHP Class" を選べば、以下のようなダイアログが出てきます。

スクリーンショット 2019-03-07 12.26.22.png

この画像の例は laravel を使った Project なので、 composer.json から適切に NameSpace 等を読み込んで事前に入力済み状態になっています。

で、例えば、 NameHogeController と入力して OK を押すと以下のようなファイルが生成されます。

<?php
/**
 * Created by PhpStorm.
 * User: hokutoasari
 * Date: 2019-03-07
 * Time: 12:28
 */

namespace App\Http\Controllers;


class HogeController
{

}

これはこれで良いのですが、 Code Template を使うことで、もうちょっと便利になります。

Code Template を設定して使ってみる

Preferences -> Editor -> File and Code Templates を開きます。

で、例えば、 "PHP Class" を以下のように編集します。

スクリーンショット 2019-03-07 12.31.10.png

<?php
declare(strict_types=1);
#if (${NAMESPACE})

namespace ${NAMESPACE};

#end

final class ${NAME} {

}

こうしておくと、さっきの cmd + n から "PHP Class" を選択して生成されるコードが以下になります。

<?php
declare(strict_types=1);

namespace App\Http\Controllers;


final class HogeController
{

}

declare(strict_types=1); を先頭に入れて、 namespace を入れて、 class には final 修飾子を付けて、といった具合に Code Template に指定した内容に従って生成されます。

他にも使える値が Code Template の設定画面に書いてあるので、お好みの設定にすると捗る。

ご参考までに

ちなみに、僕は以下の設定を行っています。

PHP File

<?php
declare(strict_types=1);


PHP Class

<?php
declare(strict_types=1);
#if (${NAMESPACE})

namespace ${NAMESPACE};

#end

final class ${NAME} {

}

PHP Interface

<?php
declare(strict_types=1);
#if (${NAMESPACE})

namespace ${NAMESPACE};

#end
interface ${NAME} {

}

PHP Trait

<?php
declare(strict_types=1);
#if (${NAMESPACE})

namespace ${NAMESPACE};

#end
trait ${NAME} {

}

PHPUnit Test

<?php
declare(strict_types=1);

#if (${NAMESPACE})
namespace ${NAMESPACE};
#end

#if (${TESTED_NAME} && ${NAMESPACE} && !${TESTED_NAMESPACE})
use ${TESTED_NAME};
#elseif (${TESTED_NAME} && ${TESTED_NAMESPACE} && ${NAMESPACE} != ${TESTED_NAMESPACE})
use ${TESTED_NAMESPACE}\\${TESTED_NAME};
#end
use Tests\Unit\TestCase;

final class ${NAME} extends#if(${NAMESPACE}) TestCase #else PHPUnit_Framework_TestCase #end{

}

./tests/Unit/TestCase.php を用意して、 Unit Test に必要そうな便利メソッドをここに書いてるので、 use Tests\Unit\TestCase; して、 extends TestCase となるように書いてます。

デフォルトの laravel Project 状態なら use Tests\TestCase; で良いんじゃないかな。

おまけ

cmd + n で表示させて状態で、おもむろに "php" とか入力するとインクリメンタルサーチになって便利ですよ。

スクリーンショット 2019-03-07 12.25.54.png

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1