sublime text3でphpの開発環境を整える


11月入社のAです。
前職はソシャゲの会社でPerlを中心に開発しており、php歴は約2ヶ月ほどです。

sublime text3で開発する場合は、デフォルトで十分開発できるのですが、
いくつか小技的なものの紹介させて頂きます。

sshfsでサーバーをマウントしてsublコマンドを使う

ラクスルではIDCFクラウド上のサーバーにsshでログインして開発しているので、
sshfsでリモートサーバーをローカルにマウントしています。

sublimeにはsublコマンドが付属しており、このコマンドを使うとターミナルからファイルを開くことができ非常に便利なのですが、リモートのファイルに対しては当たり前ですが使うことができません。

sshfsでマウントすれば、ターミナルからマウント先に移動できるので
ローカルファイルと変わらず使うことができます。

DocBlockerを入れて、phpdocコメントを書く

phpではphpdocという形式でソースコードにコメントを書けば、自動でドキュメントを生成してくれるツールがあります。

オープンソースプロジェクトなどでは標準的に使われており、できればちゃんと書きたいところですが、docコメント書くのは正直めんどくさい….

ということで当初はさぼっていたのですが、DocBlockerというパッケージを入れると随分書きやすくなりました。

docblocker1

ただし、1点はまりポイントがあって、GoogleIMEで日本語のコメントを書こうとすると、Enterキーを押した時点で内容が消えてしまいます。

パッケージ側の機能をコメントアウトして、対応することもできるのですが、それだと使いづらくなってしまうので、IME側の確定をEnterキー以外にも割り当てることで対応しました。

MacOSの場合、GoogleIMEの環境設定 -> キー設定の選択 の横にある編集ボタンから設定変更することができます。

Phpcsでファイル保存時にコーディング規約にあっているかチェックする

phpにはPHP_CodeSnifferというツールがあり、
ソースコードが、コーディング標準にしたがってくれるかをチェックしてくれます。

ラクスルではコーディング標準はまだしっかり定めているわけではないのですが、
できればPSR標準にしていきたいねーという動きがあり、ひっそりsublimeに導入しました。
php-cs-fixerというphpcsに違反している部分を自動修正してくれるツールがあるので合わせてそれも導入します。

sublimeではPhpcsというパッケージを入れることで、エディタ上からphpcsを利用することができるようになります。

  1. まずはphpcs/php-cs-fixerをインストールします。詳細は割愛しますが、僕はhomebrewで以下のようにインストールしました。

    brew update && brew upgrade
    brew install php56
    brew install php-code-sniffer
    brew install homebrew/php/php-cs-fixer
    

  2. sublimeのパッケージインストールで、Phpcsを入れて設定ファイルを書きます。
    設定ファイルは、Preferences->Package Settings->PHP Code Sniffer->Settings-Userから編集できます。
    他にも挙動は細かく設定できますが、最低限以下の設定をすれば使えるようになります。詳細はDefaultの設定ファイルを読むと良いです。

    {
        "phpcs_php_path": "/usr/local/opt/php56/bin/php",
        "phpcs_executable_path": "/usr/local/bin/phpcs",
        "php_cs_fixer_executable_path": "/usr/local/bin/php-cs-fixer",
    }
    

保存時にphpcsでチェックする例。
ここでは括弧の位置とstatic/pubilcの宣言順序が指摘されています。
phpcs1

php-cs-fixerで修正する例。
phpcs2

これでレビューで怖い人に怒られなくなりますね!

PHP-Twigを入れる

ラクスルではテンプレートエンジンにtwigを使っているのでtwig用のパッケージを入れます。twigを使っているなら入れるべきでしょう。

その他

折角なのでphp関係ないですが、僕が普段使っているパッケージをしれっと付け加えておきます。

Alignment
All Autocomplete
BracketHighlighter
Browser Refresh
Emmet
Markdown Preview
RecentActiveFiles
Sublime Bookmarks
TrailingSpace

何かお役に立つものがあれば幸いです。