【PHP/Laravel】object of class domdocument could not be converted to string

php

object of class could not be converted to string

今回はdomdocumentだが、大体はobject of class could not be converted to stringのようなエラーが出てくる。

例えば、print()のパラメータにオブジェクトを入れたとき、print(string $expression)は文字列を引数にとるので、object of class could not be converted to stringとなる。

print、printf、print_r、var_dump等の違いは改めて説明できるようにしておきたい。

Illuminate\Support\Facades\Log

Laravelのデバッグの一つに、Illuminate\Support\Facades\Logを利用した方法がある。

Log::debug()を利用してデバッグした際にも同様のエラーが出たが、そもそも、

debug(string $message, array $context = [])

debug()はstringをパラメータに取るということ。error()、info()なんかも同様にstringとなっている。

あんまり意識して使ってなくてとりあえず文字列を入れてたが、第二引数には$contextをとれる。

Log::withContext

そもそもcontextって何だろう?

単純に考えると文脈って意味だが、プログラミングでは何らかの制御に関係する情報を指す。

すべてのログエントリに含まれるコンテキスト情報を指定したい場合もあるでしょう。例えば、アプリケーションに入ってくる各リクエストに関連付けたリクエストIDをログに記録したい場合

Laravel 9.x ログ

ログにIDを紐づけて出力させたい場合に、

Log::withContext([
  'id' => $id,
   'name' => $name,
])

みたいな感じでミドルウェアにでも設定しておけば、Log::debug('message’); でわざわざcontextを設定せずとも、全てに適用してくれる。

local.DEBUG: message {"id": $id, "name": $name}

Laravel, php, programming

Posted by 異世界攻略班