gpt4 book ai didi

php - Laravel 中 `HtmlString` 有什么用?

转载 作者:可可西里 更新时间:2023-11-01 12:56:28 26 4
gpt4 key购买 nike

本类(class):HtmlString

<?phpnamespace 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().'">');    }

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

谁能解释一下?非常感谢:)

最佳答案

由于它实现了一个接口(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com