这堂课:HtmlString
<?php namespace Illuminate\Support; use Illuminate\Contracts\Support\Htmlable; class HtmlString implements Htmlable { /** * The HTML string. * * @var string */ protected $html; /** * Create a new HTML string instance. * * @param string $html * @return void */ public function __construct($html) { $this->html = $html; } /** * Get the HTML string. * * @return string */ public function toHtml() { return $this->html; } /** * Get the HTML string. * * @return string */ public function __toString() { return $this->toHtml(); } }
使用:
function csrf_field() { return new HtmlString('<input type="hidden" name="_token" value="'.csrf_token().'">'); }
除了“构造”一个字符串并返回字符串本身之外什么也没做!
任何人都可以解释一下吗?非常感谢:)
答案 0 :(得分:4)
由于它实现了一个接口(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
界面,则可以立即打印。否则,字符串将以转义形式打印。
答案 1 :(得分:0)
如果我理解为好,您想在.blade.php
文件中使用它吗?
使用
{{csrf_field()}}