avplab/php-html-builder

PHP Html builder 简化了在 PHP 脚本中创建 HTML 代码的过程。允许以简单自然的方式构建(或生成)HTML,就像创建一个 HTML 页面一样。

v2.0.3 2024-06-27 03:13 UTC

This package is auto-updated.

Last update: 2024-08-27 03:33:34 UTC


README

Build Status

有时候,我们在 PHP 运行时创建 HTML 代码时,强烈需要一些简单的方法。例如,我们想要构建一个简单的 HTML 报告,或者构建一个简单的 HTML 来突出一些分析数据等。通常,对于这类情况,我们不想使用模板引擎,或者创建独立的 HTML 文件。结果,我们有了 HTML 和 PHP 代码的混乱,或者大量连接的 HTML 字符串。PhpHtmlBuilder 的创建是为了快速解决这些问题,而不会阻塞 PHP 代码。你只需像编写 HTML 一样使用它。

安装

使用 Composer 安装组件。更新你的项目 composer.json 文件以包含依赖项。

"require": {
    "avplab/php-html-builder": "~2.0"
}

用法

要开始构建 HTML 代码,创建一个 AvpLab\PhpHtmlBuilder 的实例,并像编写 HTML 一样使用它。

$builder = new \AvpLab\PhpHtmlBuilder();
$builder
    ->tag('!DOCTYPE')->setHtml()->endOpened()
    ->html()->setLang('en')
        ->head()
            ->meta()->setHttpEquiv('X-UA-Compatible')->setContent('IE=edge,chrome=1')->endOpened()
            ->title('PhpHtmlBuilder: Example')->end()
        ->end()
        ->body()
            ->div()->setClass('container')
                ->div()->setClass('row')
                    ->div()->setClass('col-md-12')
                        ->h1('PhpHtmlBuilder Demo')->end()
                        ->p('Designed to make the code easier')->end()
                    ->end()
                ->end()
            ->end()
        ->end()
    ->end();

echo $builder;

上面的示例将构建以下 HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>PhpHtmlBuilder: Example</title>
  </head>
  <body>
    <div class="container">
      <div class="row">
        <div class="col-md-12">
          <h1>PhpHtmlBuilder Demo</h1>
          <p>Designed to make the code easier</p>
        </div>
      </div>
    </div>
  </body>
</html>

注释

要添加注释块,请使用方法 addComment()

$builder = new \AvpLab\PhpHtmlBuilder();
echo $builder->addComment('foo');

//Result
<!--foo-->

标签

创建 HTML 标签有两种方式:第一种(这也是最常见的方式)是调用与 HTML 标签同名的 CamelCase 格式的方法。标签总是被转换为带短横线的下划线。

$builder = new \AvpLab\PhpHtmlBuilder();
echo $builder->html()->customTag()->end()->end();

//Result
<html><custom-tag></custom-tag></html>

第二种方式是调用 tag() 方法,并传入 HTML 标签的名称。在这种情况下,不进行任何转换。这对于需要创建非常具体的标签,如 <!DOCTYPE> 很有用。

$builder = new \AvpLab\PhpHtmlBuilder();
echo $builder->tag('!DOCTYPE')->endOpened();

//Result
<!DOCTYPE>

要完成标签,需要调用以下方法之一:end()endShorted()endOpened()

  • 方法 end() 将创建标签 <tag></tag>(即 divpspan 等)。
  • 方法 endShorted() 将创建短标签 <tag />。在这种情况下,标签只能有属性(即 scriptlinkimginput 等)。
  • 方法 endOpened() 将创建开标签 <tag>。在这种情况下,标签只能有属性(即 meta 等)。

在创建标签时,也可以通过方法参数添加 HTML 和属性。参数将按照以下方式识别

  • 如果只提供了一个参数,并且这是一个数组,它将被识别为标签属性,否则作为标签 HTML(见下方的 addHtml())。
  • 如果提供了两个参数,第一个是标签 HTML,第二个是属性数组。注意:在这种情况下,不需要使用 camelCase 格式化属性名称。它将保持名称不变。此外,如果属性没有键,它将被识别为没有值的属性。
$builder = new \AvpLab\PhpHtmlBuilder();
echo $builder
    ->div('<h1>title</h1>', ['class' => 'container', 'Foo' => 'Bar', 'baz'])
        ->p(['class' => 'article'])->end()
    ->end();

//Result
<div class="container" Foo="Bar" baz><h1>title</h1><p class="article"></p></div>

属性

创建属性与创建标签非常相似。你需要调用具有适当名称的方法,名称为 CamelCase 格式,并以 set 开头。如果没有提供参数调用方法,则只应用属性名称。

$builder = new \AvpLab\PhpHtmlBuilder();
$builder
    ->tag('!DOCTYPE')->setHtml()->endOpened()
    ->html()->setLang('en')->end();

//Result
<!DOCTYPE html><html lang="en"></html>

内容

要将纯文本(转义)添加到标签中,请调用方法 addText()。要添加“原始”HTML 字符串,请使用另一个方法 addHtml()

$builder = new \AvpLab\PhpHtmlBuilder();
$builder
    ->div()
        ->addText('foo')
        ->addHtml('<b>bar</b>')
    ->end();

//Result
<div>foo<b>bar</b></div>

渲染

要获取 HTML 字符串,您需要调用 build() 方法,或者简单地将其识别为字符串。

$builder = new \AvpLab\PhpHtmlBuilder();
// Do some html

$htmlString = $builder->build();
echo $htmlString;

// Supports string recognision
echo $builder;

许可证

PhpHtmlBuilder 在 MIT 许可证下授权 - 请参阅 LICENSE 文件以获取详细信息