avplab / php-html-builder
PHP Html builder 简化了在 PHP 脚本中创建 HTML 代码的过程。允许以简单自然的方式构建(或生成)HTML,就像创建一个 HTML 页面一样。
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ~4.2
This package is auto-updated.
Last update: 2024-08-27 03:33:34 UTC
README
有时候,我们在 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>
(即div
、p
、span
等)。 - 方法
endShorted()
将创建短标签<tag />
。在这种情况下,标签只能有属性(即script
、link
、img
或input
等)。 - 方法
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
文件以获取详细信息