search
LoginSignup
9

More than 1 year has passed since last update.

posted at

updated at

eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)

目次

Laravelの記事一覧は下記
PHPフレームワークLaravelの使い方

Laravelバージョン

動作確認はLaravel Framework 7.19.1で行っています

eclipseでLaravel開発環境を構築する

eclipseでのPHP開発環境は下記で構築しました
eclipseでPHPの開発環境を構築する。デバッグでブレークポイントを付けてステップ実行できるようにする。
本記事は上記が完了している前提で書かれています
これで通常のPHPの開発、デバッグはできるようになりましたが
今回はeclipseでLaravelを使ったPHPアプリケーションの開発をしていきます
ブレークポイントを付けてソース上の好きなところで一時停止してデバッグできるようにします

Laravelプロジェクトを作成する

composerは事前にインストールしておいてください
Composerをインストールする
まずはLaravelプロジェクトを作ります
コマンドラインで
composer create-project --prefer-dist laravel/laravel sample
sampleフォルダができ、その中にたくさんのファイルが出来上がっています

Laravelプロジェクトをeclipseに取り込む

  1. メニューバーのファイル→インポートをクリック
    a.png

  2. 既存のComposerプロジェクトをクリック
    b.png

  3. お好きなプロジェクト名を入力し(今回はsample)、参照ボタンから先ほど作成されたsampleフォルダを選択します→完了ボタンクリック
    c.png

httpd.conf修正

apacheのhttpd.confに下記を追記
eclipseのLaravelプロジェクトフォルダは自分のPC内のパスに置き換えてください
例:C:/eclipse_workspace/sample/public

httpd.conf
Alias /laravelSample "eclipseのLaravelプロジェクトフォルダ/public"
<Directory "eclipseのLaravelプロジェクトフォルダ/public">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Controllerの作成

(1) コマンドラインで
cd sample
php artisan make:controller SampleController --resource
xdebugの設定をしているとeclipseが実行していいですかというプロンプトを出すのでOKを押します
eclipseプロジェクトを右クリック→リフレッシュ
/sample/app/Http/Controllers/SampleController.phpが現れます

(2) /sample/app/Http/Controllers/SampleController.phpのindexメソッドを下記に修正
public function index()
{
$data = ['key' => "value"];
return view('sample.index', $data);
}

return view('sample.index', $data)とすることで/sample/resources/views/sample/index.blade.phpが実行されます
第二引数でindex.blade.phpに値を渡しています
index.blade.phpの作成は後述します

(3) /sample/routes/web.phpに下記を追記
Route::get('sample/index', 'SampleController@index');
これでsample/indexというURLにGETリクエストが来た時にSampleControllerクラスのindexメソッドが実行されるようになります
POSTリクエストを処理したい場合はRoute::postを使用します

viewの作成

  1. /sample/resources/views/sampleフォルダ作成
  2. /sample/resources/views/sample/index.blade.phpファイル作成
index.blade.php
<html>
    <head>
        <title>sample</title>
    </head>
    <body>
        {{$key}}
    </body>
</html>

動作確認

http://localhost/laravelSample/sample/index
にアクセス
ブラウザにvalueと表示されればOK

デバッグ

デバッグをしていきます
SampleControllerのindexメソッド内の行番号をダブルクリックしブレークポイントを付けます
index.blade.phpを右クリック→デバック→PHP Web アプリケーションをクリック
起動URLに
http://localhost/laravelSample/sample/index
を入力してOKボタンをクリック
windows、XAMPP環境だとブレークポイントで止まりました。
しかし、vagrantdockerではなぜかとまりませんでした。

困った挙句やったこと

eclipseを見ると
.buildpath
というファイルがプロジェクト直下にあります。今回だと/sample/.buildpath
composer.jsonのautoloadとrequireを元につくられたビルドパスです
eclipseのプロジェクトを右クリック→プロパティ→PHP>ソースパス>ビルドパスで確認できます
この.buildpathを開き、
<buildpathentry kind="src" path=""/>
という1行を追記しました

これでhttp://localhost/laravelSample/sample/indexにアクセスするとvagrantでもdockerでもブレークポイントで止まりました

ただ、.buildpathに<buildpathentry kind="src" path=""/>を追記すると、当然ビルドパスはエラーを吐きます
ソースを開くとクラス名の下に赤い波線が出ています
.buildpathから<buildpathentry kind="src" path=""/>の1行を消しました
ビルドパスのエラーは消えました

これでもう一回http://localhost/laravelSample/sample/indexにアクセスしてみるとvagrantでもdockerでもブレークポイントで止まりました

1回ブレークポイントで止めてしまえば、<buildpathentry kind="src" path=""/>の1行が無くても、eclipseが起動している間はブレークポイントで止まるようです

仕方がないので、1日1回デバッグ開始時に<buildpathentry kind="src" path=""/>追記、1回デバッグしたら<buildpathentry kind="src" path=""/>消すということをしています

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
What you can do with signing up
9