debug

๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„๊ทธ ์ข…๋ฅ˜

  1. ๋ฌธ๋ฒ• ์˜ค๋ฅ˜ : php ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ๋‚ธ๋‹ค.

  2. ๋กœ์ง ์˜ค๋ฅ˜ : ๋ฌดํ•œ ๋ฃจํ”„๋‚˜ ์ž˜๋ชป๋œ ์กฐ๊ฑด๋ถ„๊ธฐ๋“ฑ์˜ ์˜ค๋ฅ˜๋กœ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๋“ฑ์˜ ๋ฌธ์ œ ๋ฐœ์ƒ

  3. ๋ฆฌ์†Œ์Šค ์˜ค๋ฅ˜ : null ํฌ์ธํ„ฐ๋‚˜ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜ใ…ก ๋Ž…์ดํ„ฐํƒ€์ž…๋“ฑ์˜ ์˜ค๋ฅ˜๋กœ Trying to get property of non-object ๋˜๋Š” Call to undefined method๋ฉ”์„œ์ง€๋กœ ํ‘œ์‹œ๋œ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์•ž์— ํƒ€์ž… ํžŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ์ข‹์€ ์Šต๊ด€์ด๊ณ  php7๋ถ€ํ„ฐ๋Š” ํƒ€์ž…์„ ์ง€์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  4. ๊ณ„์‚ฐ ๋ฒ„๊ทธ : 0์œผ๋กœ ๊ฐ’์„ ๋‚˜๋ˆ„๊ฑฐ๋‚˜ ๋ฐ˜์˜ฌ๋ฆผ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•ด ์ด์ƒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ => ๋ˆ๊ณผ ๊ด€๋ จ๋œ ์„œ๋น„์Šค์—์„œ๋Š” ์น˜๋ช…์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

  5. ๋™์‹œ์„ฑ ์˜ค๋ฅ˜ : php๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์–ธ์–ด๋กœ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ๋ฌธ์ œ๋Š” ๋งŽ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ db์—์„œ๋Š” ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋•Œ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜์žˆ๋‹ค.

  6. ์ž˜๋ชป๋œ ์‚ฌ์šฉ : api๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜

  7. ํŒ€์›Œํฌ ์˜ค๋ฅ˜ : ์—ฌ๋Ÿฌ๋ช…์ด ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ๊ณ ์น˜๋Š” ๊ณผ์ •์—์„œ ์ถฉ๋Œ, side effect๋“ฑ์ด ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  8. ์„ฑ๋Šฅ ์˜ค๋ฅ˜

  9. ๋ณด์•ˆ ์˜ค๋ฅ˜ : ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค์—ผ, ์œ ์‹ค, ํƒˆ์ทจ๋˜๋Š” ๋ฌธ์ œ

  10. ์„ค๊ณ„ ์˜ค๋ฅ˜ : ์ž˜๋ชป๋œ ์„ค๊ณ„ ๋ช…์„ธ์„œ์— ์˜ํ•ด์„œ ์—‰๋šฑํ•œ ๊ฒฐ๊ณผ๋ฌผ์ด ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•

1. dd() ํ•จ์ˆ˜

//controller
public function show($id){
    $article = \App\Article::findeOrFail($id);
    dd($article);
    return $article->toArray();
}

dd()๋ฉ”์„œ๋“œ๋Š” ๋””๋ฒ„๊ฑฐ๋กœ ์ค‘๋‹จ์ ์„ ์ฐ๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์„ ๋คํ”„ํ•˜๊ณ  ์‹คํ–‰์„ ๋ฉˆ์ถ˜๋‹ค. ์ด๋Š” ๋ทฐ๋ฅผ ๋””๋ฒ„๊น…ํ• ๋•Œ๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ผ๋ผ๋ฒจ์€ ๋ธ”๋ ˆ์ด๋“œ ์—”์ง„์œผ๋กœ ๋ทฐ๋ฅผ ์ปดํŒŒ์ผํ•œ ํ›„ storage/framework/view ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ์บ์‹œํ•ด ๋†“๋Š”๋ฐ, ์ด ์บ์‹œ๋œ ํŒŒ์ผ์„ ์—ด์–ด ๋ทฐ ๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค ํ•˜์ง€๋งŒ ์—”์ง„์ด ์ปดํŒŒ์ผํ•œ phpํŒŒ์ผ์ด๋ผ ๋ณด๊ธฐ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ์€๋ฐ ์ด๋•Œ render()๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

controller์—์„œ dd(view('article.index',compact('articles'))->render());์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด render()๋ฉ”์„œ๋“œ๊ฐ€ ๋ทฐ ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ html์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

2. ์ฟผ๋ฆฌ ๋””๋ฒ„๊น…

php artisan tinker
>>> $queryLoyalUsers = App\User::wher(
    'last_login', '>', Carbon\Carbon::now()->subMonth()
)->toSql();

DB::listen(function ($query){...})๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์ปฌ๋ ‰์…˜์„ ์–ป๋Š” ์ฟผ๋ฆฌ์ผ ๋•Œ๋Š” ์œ„์™€ ๊ฐ™์ด toSql()๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋ธ ์ฟผ๋ฆฌ์—์„œ get()๋ฉ”์„œ๋“œ๋ฅผ toSql()๋กœ ๋ฐ”๊พธ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

Last updated