此类:HtmlString


namespace Illuminate\Support;

使用Illuminate\Contracts\Support\Htmlable;

HtmlString类实现Htmlable
{
/**
* HTML字符串。
*
* @var字符串
*/
protected $ html;

/**
*创建一个新的HTML字符串实例。
*
* @param字符串$ html
* @返回无效
*/
公共(public)功能__construct($ html)
{
$ this-> html = $ html;
}

/**
*获取HTML字符串。
*
* @返回字符串
*/
公共(public)函数toHtml()
{
返回$ this-> html;
}

/**
*获取HTML字符串。
*
* @返回字符串
*/
公共(public)函数__toString()
{
返回$ this-> toHtml();
}
}

用:

函数csrf_field()
{
返回新的HtmlString('');
}

它除了“构造”字符串并返回字符串本身外什么都不做!

有人可以解释吗?非常感谢 :)

最佳答案

由于它实现了接口(interface)(Htmlable),因此其他方法可以潜在地检查是否将给出的字符串视为HTML。

它使用的不是很多,但是例如在Illuminate/Support/helpers.php:519中:

if (! function_exists('e')) {
    /**
     * Escape HTML special characters in a string.
     *
     * @param  \Illuminate\Contracts\Support\Htmlable|string  $value
     * @return string
     */
    function e($value)
    {
        if ($value instanceof Htmlable) {
            return $value->toHtml();
        }

        return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false);
    }
}

在这里,您可以看到,如果$value附着在Htmlable接口(interface)上,则可以立即进行打印。否则,将以转义形式打印字符串。

关于php - Laravel中的 `HtmlString`有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42319470/

10-10 00:32