Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

라라벨로 개발할 때 디버깅에 유용한 여러 도구와 환경을 구성하는 방법을 설명합니다.

...

Code Block
languagebash
$ composer require barryvdh/laravel-debugbar --dev


auto discovery 가 되지만 개인적으로는 선호하지 않으므로config/app.php 의 Provider 에 다음 클래스를 등록합니다. 

Code Block
Barryvdh\Debugbar\ServiceProvider::class,

...

Code Block
    'flush' => [
        \Barryvdh\Debugbar\LaravelDebugbar::class,
    ],

IDE Helper

laravel ide helper laravel 의 eloquent ORM 같은 경우 magic method 가 많으므로 PHPStorm 같은 IDE 에서는 없는 method 를 사용한다는 경고가 많이 나옵니다.거의 모든 메서드에 대해서 이런 경고창이 뜨는데 ide helper 같은 도구가 아니면 해결이 어렵고 그로 인해 이런 경고창에 익숙해지는 게 가장 큰 문제라고 생각합니다

.이런 경고는 실제 사용에는 지장이 없으므로 개발자가 경고창에 익숙해지고 당연하게 여기게 되며 그로 인해 여러 경고를 무시하는 나쁜 습관이 들 수 있으며 phpstan 이나 psalm 같은 정적 분석기 도입도 어렵게 됩니다.


laravel ide helper 는 IDE 에서 이런 오류를 내지 않도록 laravel 헬퍼와 model 에 대해 phpDoc 을 만들어 줍니다.

 설치

Code Block
languagebash
$ composer require --dev  barryvdh/laravel-ide-helper


설치후에 AppServiceProvider.php 에 ide-helper 등록

Code Block
languagephp
public function register()
{
   if ($this->app->isLocal()) {
       $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
   }
}  

사용

model 을 추가/변경하거나 새로운 외부 패키지를 끌어와서 사용하는등 변경이 생기면 다음 명령어를 실행해주면 됩니다.

Code Block
languagebash
$ php artisan ide-helper:generate
$ php artisan ide-helper:meta
$ php artisan ide-helper:models -N


실제로는 매번 명령어를 치기 어려우므로 composer.json 에 다음 내용을 추가해서 사용합니다.

Code Block
"post-update-cmd": [
	"@php artisan vendor:publish --tag=laravel-assets --ansi --force",
	"@php artisan ide-helper:generate",
	"@php artisan ide-helper:meta",
	"@php artisan ide-helper:models -N"
],

그러면 composer update 마다 ide-helper 명령어를 실행합니다.


ide-helper 가 생성하는 다음 파일들을 파일들은 git 에 포함될 필요가 없으므로 다음 내용을 .gitignore 에 추가해 줍니다.

  • _ide_helper.php
  • _ide_helper_models.php
  • .phpstorm.meta.php
Code Block
languagebash
echo _ide_helper.php >> .gitignore
echo _ide_helper_models.php >> .gitignore
echo .phpstorm.meta.php >> .gitignore


Laravel dump-server

...