[Laavel] Laavel로 할 수 있는 여러 가지 디버깅 방법.
Laavel의 디버그 도우미
Laavel에 변수 내용을 출력하는 디버그 도우미가 있습니다.
php 표준 출력 방법은 거의 Laavel의 디버그 함수로 대체할 수 있다.
출력이 보기 쉽기 때문에 라벨의 개발에서는 기본적으로 php 표준보다 이걸 사용하는 것이 좋다.
컨트롤러든 모델이든 어디든 쓸 수 있어요.
dump()
php 표준 vardump ()와 같은 출력 변수입니다.
var_dump () 를 더 풍부한 외관으로 출력합니다.
dd()
dump and die의 약칭입니다.
이 함수를 놓아도 처리가 멈춘다는 얘기다.
그래서 여러 곳을 확인할 수 없다.
이렇게 말하지만, 라벨 개발에서 리디렉션을 자주 사용하기 때문에 이 함수에 대한 배려를 많이 받는다.
보충:php 표준 디버깅
이것은 라벨과 무관한 말이다.
변수와 상수의 내용을 확인할 수 있는 php의 표준 함수와 언어 구조가 존재합니다.
echo 문장 또는 print () 함수, vardump () 함수 등.
상술한 dd()와 dump()는 모두 사람들이 쉽게 이해할 수 있도록 확장된 것이다.
dump()의 스타일이 장애가 될 때 사용하는 것이 좋습니다.
echo __LINE__; // 123
$this->publish_year = 2020;
$this->publish_month 3;
$this->publish_day 30;
$data['publish'] = sprintf('%04d-%02d-%02d', $this->publish_year, $this->publish_month, $this->publish_day);
print_r($data['publish']); //2020-03-30
var_dump($data['publish']); // string(10) "2020-03-30"
tinker
라벨에 표준으로 탑재된 리플입니다.
tinker는 psh의 자물쇠 라이브러리로 Laavel의 사용을 편리하게 하기 위해 확장되었습니다.
코드를 설치하기 전이나 원하는 출력을 실행할 수 없을 때 확인할 수 있습니다.
나는 라벨 개발에서 psh를 직접 사용할 이유가 없다고 생각한다.
tinker도 psh와 완전히 같은 조작 방법을 사용하여 조작할 수 있다.
REPL은 시작 후 콘솔에서 php 코드의 실행 결과를 확인할 수 있는 기능이다.
Read-Eval-Pint Loop의 약칭입니다.
즉, ->평가->를 입력하여 중복적으로 출력하기 때문에 이렇게 부른다.
부팅 방법
터미널에서 다음 명령을 실행합니다.
php artisan tinker
Psy Shell v0.10.12 (PHP 8.0.10 — cli) by Justin Hileman
# Docker環境の場合
sail tinker
Psy Shell v0.10.12 (PHP 8.1.0 — cli) by Justin Hileman
실행
sail tinker
Psy Shell v0.10.12 (PHP 8.1.0 — cli) by Justin Hileman
>>> $a = 1 // 普通の変数の確認
=> 1
>>> ++$a
=> 2
>>> Headline::find(1) // ここからはLaravel特有です。モデルの内容を確認できます。
[!] Aliasing 'Headline' to 'App\Models\Headline' for this Tinker session.
=> App\Models\Headline {#4464
id: 1,
flag: 1,
target: 1,
publish: "2021-02-23",
...
>>> Str::startswith('abcdef', 'abc') // ヘルパーも使えます。
=> true
>>> Str::startswith('abcdef', 'dbc')
=> false
로그 파일
Laavel에는 로그 저장 메커니즘이 있습니다.
출력 위치는 브라우저가 아니라 파일 등 로그로 화면을 더럽히지 않습니다.
dump () 또는 dd () 와 달리 매개 변수에서 그룹이나 대상을 찾을 수 없습니다.
로그에 그룹이나 대상을 보존하려면 printr() 함수를 사용할 수 있습니다.
두 번째 인자를 진짜로 설정하면 문자열을 반환값으로 가져옵니다.
PHP: print_r - Manual
로그는 단계가 있습니다.
Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);
등급에 대한 상세한 상황은 이번에 설명하지 않았지만, 대체적으로 로그의 출력 목적지를 제어할 것이다.
다음 코드 예제에서는 로그 출력의 Log만 나열합니다. debug().
기본적으로 logs/laavel.log 파일로 출력됩니다.
로그 출력은 config/logging으로 설정됩니다.php로 진행합니다.
예를 들어, Slack에 보낼 수 있습니다.
예제
출력 매개 변수 id
use Illuminate\Support\Facades\Log;
class AnnouncementCcontroller extends Controller
{
// /admin/announcement/edit/200にアクセス
public function edit($id)
{
Log::debug($id);
/*
laravel.logに以下が出力されます。
[2022-01-16 15:07:10] local.DEBUG: 200
*/
Eloquent 모델의 내용 내보내기use Illuminate\Support\Facades\Log;
class HeadlineCcontroller extends Controller
{
// admin/headline/edit/200にアクセス
public function edit($id)
{
$headline = Headline::findOrFail($id);
// モデルオブジェクトはそのまま引数に渡せます。
Log::debug($headline);
/*
laravel.logに以下が出力されます。
[2022-01-16 15:08:45] local.DEBUG: {"id":200,"flag":1,"target":3,"publish":"2020-03-30",...
*/
Laravel Debugbar
페이지 아래에 디버깅 정보를 표시하는 도구입니다.
다음을 확인할 수 있습니다.
\Debugger: debug() 등의 방법으로 변수 등의 내용을 확인할 수 있습니다.
routes/web.php나 컨트롤러를 보지 않아도 인용된 보기를 확인할 수 있습니다.
조회 확인을 통해 N+1 문제 발송 여부 등 효율성이 떨어지는 조회를 설정할 수 있다.
차리다
compooser 명령을 사용하여 설치합니다.
composer require barryvdh/laravel-debugbar --dev
.env 파일을 편집합니다.APP_DEBUG 또는 DEBUGBBARENABLED를 True로 설정합니다.
APP_DEBUG=true
# APP_DEBUGの設定と、Debugbarの設定を分けたいとき場合にはこちらをtrueに設定。
DEBUGBAR_ENABLED=true
예제
emergency에서log까지 모든 단계의 방법이 있습니다.
따로 사용하면 디버깅 데스크톱의 분류가 쉬워진다.
\Debugbar::emergency('emergency');
\Debugbar::alert('alert');
\Debugbar::critical('critical');
\Debugbar::error('error');
\Debugbar::warning('warning');
\Debugbar::notice('notice');
\Debugbar::info('info');
\Debugbar::debug('debug');
\Debugbar::log('log');
$inputs = new Headline();
\Debugbar::log($inputs);
위의 Log fazard 정보는 메시지 탭에도 표시됩니다.
Reference
이 문제에 관하여([Laavel] Laavel로 할 수 있는 여러 가지 디버깅 방법.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/qljmssqh/articles/290f8611a9ca7e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)