Xpressengine3 \ Lightning
XE3 (Xpressengine 3) - UI Object 추상 클래스 AbstractUIObject
class AbstractUIObject (Path: \core\src\Xpressengine\UIObject\AbstractUIObject.php)
화면에 그려주는 UI Object 는 render
함수에서 blade.php
파일을 바로 사용할 수 있도록 HtmlString
오브젝트를 반환해줍니다.
/**
* UIObject가 출력될 때 호출되는 메소드이다.
*
* @return string
*/
public function render()
{
return new HtmlString($this->template);
}
class HtmlString (Path: \vendor\laravel\framework\src\Illuminate\Support\HtmlString.php)
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();
}
}
Illuminate\\Contracts\\Support\\Htmlable\\HtmlString
interface Htmlable
{
/**
* Get content as a string of HTML.
*
* @return string
*/
public function toHtml();
}
Htmlable
을 상속받은 클래스는 balde.php
파일 내에서 {{ }}
안에 사용해 설정한 HTML 결과를 화면에 보여줍니다.
{{ }} 구문은 XXS 공격을 방지하기 위해 자동으로 PHP의 htmlspecialchars
함수를 실행하게 됩니다.
helper function e
if (! function_exists('e')) {
/**
* Escape HTML special characters in a string.
*
* @param \\Illuminate\\Contracts\\Support\\Htmlable|string $value
* @param bool $doubleEncode
* @return string
*/
function e($value, $doubleEncode = false)
{
if ($value instanceof Htmlable) {
return $value->toHtml();
}
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', $doubleEncode);
}
}
0개 댓글