comsolit/html-builder

使用流畅的API构建HTML标签

1.0 2015-05-21 12:27 UTC

This package is auto-updated.

Last update: 2024-08-28 14:30:31 UTC


README

HTMLBuilder

PHP构建小型HTML片段的轻量级实用类。

示例

所有示例都需要一个 use Comsolit\HTMLBuilder; 语句。

带有内部文本的链接标签

$builder = new HTMLBuilder('a', 'comsolit AG');
$builder->addAttribute('href', 'https://www.comsolit.com');

$this->assertEquals(
    '<a href="https://www.comsolit.com">comsolit AG</a>',
    $builder->build()
);

没有结束标签的输入标签

$builder = new HTMLBuilder('input');
$builder
    ->setVoid() // don't build a closing tag
    ->addAttribute('type', 'text')
    ->addAttribute('name', 'some_name');

$this->assertEquals(
    '<input type="text" name="some_name"/>',
    $builder->build()
);

带有内部文本的标签

$builder = new HTMLBuilder('span', 'my text');

$this->assertEquals(
    '<span>my text</span>',
    $builder->build()
);

使用 __toString() 魔法方法

$builder = new HTMLBuilder('span');

$this->assertEquals(
    $builder->build(),
    (string)$builder
);

包装标签

$inputBuilder = (new HTMLBuilder('input'))->setVoid();
$labelBuilder = new HTMLBuilder('label', $inputBuilder);

$this->assertEquals(
    '<label><input/></label>',
    (string)$labelBuilder
);

封装标签

$inputBuilder = (new HTMLBuilder('input'))->setVoid();
$labelBuilder = $inputBuilder->encapsulate('label');

$this->assertEquals(
    '<label><input/></label>',
    (string)$labelBuilder
);

条件设置属性

$builder = (new HTMLBuilder('input'))
    ->setVoid()
    ->addAttribute('type', 'checkbox')
    ->addAttributeIf(1 + 1 === 3, 'disabled', 'disabled')
    ->addAttributeIf(1 + 1 === 2, 'checked', 'checked');

$this->assertEquals(
    '<input type="checkbox" checked="checked"/>',
    (string)$builder
);

类专用特殊方法

$builder = (new HTMLBuilder('span'))
    ->addClass('once')
    ->addClass('multiple')
    ->addClass('multiple');

$this->assertEquals(
    '<span class="once multiple"></span>',
    (string)$builder
);

添加多个子项

$builder = new HTMLBuilder('ul');

for ($i = 0; $i < 2; ++$i) {
  $builder->addChild(new HTMLBuilder('li', (string)$i));
}

$this->assertEquals(
    '<ul><li>0</li><li>1</li></ul>',
    (string)$builder
);

相关包

我们已经在三个项目中使用了这个构建器,然后评估了其他包以决定是否要发布此构建器。