Laravel on Eclipse

社内で開発環境構築用に書いた資料を公開します。

# はじめに
[Laravel](https://laravel.com/)はPHPのフレームワークのひとつで、2016年現在、もっとも注目度が高いフレームワーク（[参考](http://eng-entrance.com/php_framework))。

Laravel（というか、昨今のトレンドとして）は、コマンドラインで環境構築やライブラリの導入を行うことを前提としているが
 ~~今回はCLIに不慣れな開発者が、GUIで一通りの作業がこなせるようにEclipseのプラグインを駆使して開発環境を構築する方法をまとめた。~~ 
プラグインの挙動が怪しい ＆ やはりCLIで使えるようになった方が最終的には楽ということで、コマンドラインでの操作も含むこととする。
なお、Windowsでの環境構築を前提とする。

# XAMPPのインストール
WindowsにはデフォルトでPHPが入っていないので、XAMPPをインストールする。
[こちら](https://www.apachefriends.org/jp/index.html)よりXAMPPのWindows版をダウンロードし、インストールする。
PHP5.6が入っているバージョンを使うことを推奨する。

今回は`C:\xampp`にインストールする前提とする。

## PHPの環境設定
内部的にphpコマンドが発行されるため、パスが通っていないと色々失敗する。
[こちら](http://pc-karuma.net/xampp-php-path/)を参考に、環境変数のPathに`C:\xampp\php`を追加する。
コマンドプロンプトを開いて`php -v`でPHPのパスが通っていることを確認しておくこと。

# Eclipseのインストール
今回はEclipse 4.6 Neonを使うこととする。
[こちら](http://www.eclipse.org/downloads/eclipse-packages/)よりEclipse for PHP DevelopersのWindows版をダウンロードし、zipを解凍する。
XAMPPと違って、32bitと64bitがあるので注意。開発マシンは基本64bit機なので、64bitを選択すること。

今回は`C:\xampp\eclipse`へ解凍する前提とする。
なお、日本語化すると色々面倒なので、基本英語バージョンで頑張ること。

## Eclipseの初期設定
色々初期設定をしないと、Laravelプロジェクトの生成に失敗する。何事も事前準備が肝要。

### PHPの実体ファイル参照先指定
EclipseにPHPがどこにインストールされているかを教えてあげる。

1. Eclipse上部メニューより`Window > Preferences`でPreferencesウインドウを開く
2. Preferencesウインドウの左側メニューより`PHP > PHP Executables`を選択
3. 右側の`Add...`ボタンを押してNew PHP Excutableウインドウを開く
4. New PHP Excutableウインドウの「Executable path:」の右側の`Browse...`ボタンを押してファイル選択ダイアログを開く
5. 選択ダイアログで`C:\xampp\php\php.exe`を指定する
6. New PHP Excutableウインドウの各入力フォームがすべて埋まっていることを確認
Name: PHP 5.6.xx(CLI)　※xxはXAMPPでインストールしたPHPのバージョンが入る
7. `Next >`ボタンを押してDebbger Settingsに遷移する
8. `Finish`ボタンで登録、New PHP Excutableウインドウが閉じる
9. Prefencesウインドウで`OK`ボタンを押して設定完了、ウインドウが閉じる

### Composer Pluginを導入
[Composer](https://getcomposer.org/)とはPHPでライブラリ間の依存関係を解決するツール。
JavaでいえばMavenやGradle、Node.jsでいうところのnpmと同じ役割。

従来PHPでは、PEARなどで外部ライブラリを管理することが多かったが、OS上に展開されるため、追加にroot権限が必要だったり、複数システムを同一OS上に稼働しているとバージョン競合が起きるなどしていた。
現在、アプリ配下で完結するような依存管理ツールが主流となっており、Composerもそれに沿ったツールとなっている。

本来、ComposerはCLIを想定しているが、[PDT Extensions Group](http://p2-dev.pdt-extensions.org/)がEclipseのプラグインとして稼働するものを実装しているのでそれを使う。

1. Eclipse上部メニューより`Help > Install New Software...`でInstallウインドウを開く
2. Installウインドウ右側の`Add...`ボタンを押してAdd Repositoryウインドウを開く
3. Add Repositoryウインドウに以下の情報を設定し`OK`ボタンで登録、ウインドウが閉じる
Name: `PDT Extensions`
Location:  `http://p2.pdt-extensions.org/`
4. InstallウインドウWork with: で 3. で登録した`PDT Extensions - http://p2-dev.pdt-extensions.org/`を選択
5. 最初は初期化処理に時間がかかるのでしばらく待つと、真ん中くらいにインストール可能なPluginの一覧が表示されるので以下のPluginを選択
`PHP Development Tools`
`Toolchains`内の`Composer`
6. `Next >`ボタンを押してInstall Detailsに遷移
7. `Next >`ボタンを押してReview Licensesに遷移
8. `I accept the terms of the license agreements`をチェックし、`Finish`ボタンを押してインストール開始
9. 途中、Security Warningダイアログが出るので`OK`ボタンを押す
10. 途中、Software Updatesダイアログが出るので`Yes`ボタンを押してEclipseを再起動する
11. Composerがインストールされる

##Laravelプロジェクトの新規追加
Eclipse上でLaravelプロジェクトを新規追加する方法

1. Eclipse上部メニューより`File > New > Other...`でNewウインドウを開く
2. Newウインドウで`Composer Project from existing package`を選択して`Next >`ボタンを押してNew composer Project from existing packageウインドウに遷移
3. Project Name:を任意の名前で定義して`Next >`ボタンを押してSelect packageに遷移
4. Find: に`laravel`を入力、一覧に出てきたライブラリリストの中から`laravel/laravel (The Laravel Framework.)`のダウンロードボタン(○に↓＋ダウンロード数）を押すと右側にバージョンを選択するリストボックスが現れるので`v5.3.16`を選択し、`Finish`ボタンを押すと構築が始まる

## Eclipse上からコマンド実行環境構築（任意）
Eclipse上でコマンド実行できた方が、別ウインドウでコマンドプロンプトを開くよりも便利なケースがあるのでその設定をしておく。

1. Eclipse上部メニューより`Run > External Tools > External Tools Configrations...`を選択してExternal Tools Configurationsウインドウを開く
2. External Tools Configurationsウインドウで`New`アイコンを押す
3. 右側に以下の情報を入力する
Name: `Cmd`
Location: `C:\Windows\System32\cmd.exe`
Working Directory: `${project_loc}`
4. 右下の｀Apply`ボタンを押す
5. 最下部の`Run`ボタンを押す
6. メイン画面の下側にConsoleタブが開いて、コマンドプロンプトが表示されればOK

## Eclipseで入力補完が効くように設定
せっかくEclipseを使っているので、クラス名やメソッド名を入力補完したいので以下の設定を行う。

1. コマンドプロンプトを開いてプロジェクトディレクトリに移動する（上記Eclipse上からコマンド実行環境構築していれば、Consoleタブ上で入力する）
2. 以下のコマンドでlaravel-ide-helperをインストール
`> composer require barryvdh/laravel-ide-helper --dev`
3. プロジェクトのconfigディレクトリにあるapp.phpファイルをエディタで開く
4. app.php内にの`providers`に以下を追加
```
    'providers' => [
        ･･･
        Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
    ],
```
5. 以下のコマンドを実行する
`>php artisan ide-helper:generate`
6. プロジェクト内に_ide_helper.phpファイルが生成される