Help us understand the problem. What is going on with this article?

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=""/>消すということをしています

toontoon
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away