此类: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/