jiny/html는 서버사이드 HTML 코드를 객체 지향적으로 생성할 수 있는 Laravel 패키지입니다. 복잡한 HTML 구조를 데이터 기반으로 안전하고 유지보수하기 쉽게 빌드할 수 있습니다.
이 패키지는 PHP 객체를 사용하여 HTML 요소를 생성하는 방법을 제공합니다. 각 HTML 태그는 해당하는 PHP 클래스로 표현되며, 메서드 체이닝을 통해 속성을 설정하고 내용을 추가할 수 있습니다.
모든 HTML 컴포넌트는 CTag 클래스를 기반으로 합니다:
use Jiny\Html\CTag;
// 기본 사용법
$tag = new CTag('tagname', $hasBody, $content);대부분의 메서드는 $this를 반환하여 체이닝을 지원합니다:
$element = (new CDiv())
->setAttribute('class', 'container')
->setAttribute('id', 'main-content')
->setBodyContent('Hello World');모든 컨텐츠는 XSS 방지를 위해 자동으로 이스케이프됩니다:
$div = new CDiv();
$div->setBodyContent('<script>alert("xss")</script>');
// 출력: <div><script>alert("xss")</script></div>- 설치:
composer require jiny/html - 기본 사용법: 기본 컴포넌트 가이드
- 폼 만들기: 폼 컴포넌트 가이드
- 테이블 만들기: 테이블 컴포넌트 가이드
use Jiny\Html\CDiv;
use Jiny\Html\CSpan;
$container = new CDiv();
$container->setAttribute('class', 'container');
$title = new CSpan();
$title->setAttribute('class', 'title')
->setBodyContent('안녕하세요!');
$container->addItem($title);
echo $container;
// 출력: <div class="container"><span class="title">안녕하세요!</span></div>$alert = new CDiv();
$alert->setAttribute('class', $isError ? 'alert-danger' : 'alert-success');
$alert->setBodyContent($isError ? '오류가 발생했습니다!' : '성공했습니다!');- 객체 생성 비용을 최소화하기 위해 필요한 경우에만 컴포넌트를 생성하세요
- 대량의 데이터를 처리할 때는 적절한 캐싱을 고려하세요
- 복잡한 구조는 Blade 템플릿과 함께 사용하는 것을 권장합니다
개발 중에는 toString() 메서드를 명시적으로 호출하여 생성된 HTML을 확인할 수 있습니다:
$element = new CDiv();
$element->setAttribute('class', 'test');
var_dump($element->toString()); // HTML 출력 확인