anvii / htmlelement
一个用于在PHP中创建HTML代码的库
1.1.1
2023-04-08 09:18 UTC
Requires
- php: >=7.2.0
README
HtmlElement 提供了一种简单高效的方法,用于在PHP中构建HTML代码
如果你想在PHP中交替使用HTML代码,如模块化架构,并且希望程序源代码优雅,HtmlElement 将非常有用。
先决条件
HtmlElement 需要 PHP v7.3 或更高版本
构建HTML
示例代码
use anvii\HtmlElement\HtmlElement; // Create an element $div = new HtmlElement('div', ['class'=>'class1 class2'], 'Hello, World!'); // Build sample menu $menu = HtmlElement::ul(['id'=>'sample-menu', 'class'=>'menu'], [ HtmlElement::li(['class'=>'active'], HtmlElement::a(['href'=>'...'], 'New') ), HtmlElement::li(['class'=>''], HtmlElement::a(['href'=>'...'], 'Open') ), HtmlElement::li(['class'=>'disabled'], HtmlElement::a(['href'=>'...'], 'Save') ) ]); // Add one more element(s) $menu->add([ HtmlElement::hr(), HtmlElement::li( HtmlElement::a(['href'=>'...', '_if'=>$hasHelp], 'Help') ) ]); // Query elements like in jQuery $menu->query('a')->addClass('awesome'); $menu->query('li.disabled a')->removeClass('awesome'); // Send menu to browser echo $menu;
查询元素
该库具有类似jQuery的简单查询引擎。它允许动态地通过模块交替HTML代码。
$form = $html->first('form#login'); $form->query('input[type="submit"]')->addClass('nice-button');
HtmlQuery 类也支持回调函数,但由于安全原因,禁止使用函数名字符串。
$form->query(function($e) { return ($e instanceof \my\Button::class); });
注意,HtmlElement中的查询非常受限。它只支持一个类和一个属性。
特殊属性
以下划线 '_' 开头的HTML属性是特殊的。它们不会被渲染,但用于构建文档。
echo HtmlElement::a(['href'=>'/user/profile', '_if'=>isUserRegistered()], 'Profile');
以下特殊属性由 HtmlElement 使用
- _if - 条件元素。该属性的值可以是布尔值或函数。
- _raw - 不编码元素的内容。
- _weight - 用于定义元素的顺序。请参阅下面的 '排序元素'。
- _hideempty - 如果元素的内容为空,则不显示元素。
排序元素
你可以通过使用特殊属性 '_weight' 来对元素进行排序。例如,你可以从模块动态构建菜单。
$userMenu->add([ HtmlElement::a(['href'=>'/user/profile', '_weight'=>10], 'Profile'), HtmlElement::a(['href'=>'/user/password', '_weight'=>12], 'Change Password'), HtmlElement::a(['href'=>'/user/Logout', '_weight'=>100], 'Logout'), ]); // From module: HtmlElement::first('#userMenu')->add( HtmlElement::a(['href'=>'gallery', 'weight'=>30]) );