Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

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

laravel Debugbar

composer 로 설치해 줍니다.

$ composer require barryvdh/laravel-debugbar --dev


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

Barryvdh\Debugbar\ServiceProvider::class,


설정 파일을 퍼블리싱합니다.

$ php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"


laravel octane 을 사용할 경우 config/octane.php 에 다음 내용을 추가해야 합니다.

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

IDE Helper

laravel 의 eloquent ORM 같은 경우 magic method 가 많으므로 PHPStorm 같은 IDE 에서는 없는 method 를 사용한다는 경고가 많이 나옵니다.

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


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

 설치

$ composer require --dev  barryvdh/laravel-ide-helper


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

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

사용

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

$ php artisan ide-helper:generate
$ php artisan ide-helper:meta
$ php artisan ide-helper:models -N


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

"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
echo _ide_helper.php >> .gitignore
echo _ide_helper_models.php >> .gitignore
echo .phpstorm.meta.php >> .gitignore


Laravel dump-server


같이 보기

  • No labels