首页 > 解决方案 > 我如何才能像 Laravel 中的 dd() 函数一样将变量数据作为字符串获取?

问题描述

我需要获取请求数据,但我无法使用 all() 方法获取 ip、fullUrl 和其他(仅打印输入值),但是当我使用“dd(request())”时,这会显示所有数据(我需要data 使用 dd 方法打印的内容,但就像要保存的字符串,但打印此数据的人除外)。我正在调试我的应用程序,所以我需要将每个请求数据保存在日志文件中,例如:

\Log::debug($request)

所以,

标签: laravellaravel-5

解决方案


您可以使用:

\Log::debug($request->toString());

或者你可以使用

\Log::debug((string) $request);

Laravel Request 对象来自Illuminate\Http\Requestwhich extendsSymfony\Component\HttpFoundation公开以下代码:

    public function __toString()
    {
        try {
            $content = $this->getContent();
        } catch (\LogicException $e) {
            return trigger_error($e, E_USER_ERROR);
        }
        $cookieHeader = '';
        $cookies = [];
        foreach ($this->cookies as $k => $v) {
            $cookies[] = $k.'='.$v;
        }
        if (!empty($cookies)) {
            $cookieHeader = 'Cookie: '.implode('; ', $cookies)."\r\n";
        }
        return
            sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n".
            $this->headers.
            $cookieHeader."\r\n".
            $content;
    }

__toString()在 PHP 中被认为是一种神奇的方法。

__toString()方法允许一个类决定当它被视为字符串时它将如何反应。例如,什么 echo $obj; 将打印。此方法必须返回一个字符串,否则 E_RECOVERABLE_ERROR会发出致命级别的错误。

您可以在官方文档中阅读更多相关信息。


推荐阅读