decodelabs / tagged
无需烦恼的PHP标记生成
v0.15.6
2024-09-06 17:33 UTC
Requires
- php: ^8.1
- ext-intl: *
- decodelabs/coercion: ^0.2
- decodelabs/collections: ^0.9
- decodelabs/cosmos: ^0.2
- decodelabs/elementary: ^0.4
- decodelabs/exceptional: ^0.4
- decodelabs/glitch-support: ^0.4
- decodelabs/veneer: ^0.11.6
- symfony/polyfill-mbstring: ^1.7
Requires (Dev)
Suggests
- nesbot/carbon: Support for time interval formatting
- dev-develop / 0.15.x-dev
- v0.15.6
- v0.15.5
- v0.15.4
- v0.15.3
- v0.15.2
- v0.15.1
- v0.15.0
- v0.14.14
- v0.14.13
- v0.14.12
- v0.14.11
- v0.14.10
- v0.14.9
- v0.14.8
- v0.14.7
- v0.14.6
- v0.14.5
- v0.14.4
- v0.14.3
- v0.14.2
- v0.14.1
- v0.14.0
- v0.13.0
- v0.12.0
- v0.11.10
- v0.11.9
- v0.11.8
- v0.11.7
- v0.11.6
- v0.11.5
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.1
- v0.10.0
- v0.9.1
- v0.9.0
- v0.8.10
- v0.8.9
- v0.8.8
- v0.8.7
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.0
- v0.6.9
- v0.6.8
- v0.6.7
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.0
- dev-main
This package is auto-updated.
Last update: 2024-09-06 17:33:21 UTC
README
PHP标记生成无需烦恼。
Tagged提供了一种简单、强大且美观的方法来创建HTML标记,无需处理乱糟糟的代码。
在 DecodeLabs博客 上获取新闻和更新。
安装
composer require decodelabs/tagged
使用
Tagged使用Veneer在DecodeLabs\Tagged
下提供一个统一的界面。您可以通过这个静态界面访问所有主要的HTML功能,而不会影响测试和依赖注入。
HTML标记
使用简单、灵活的接口生成标记。
use DecodeLabs\Tagged as Html; echo Html::{'div.my-class#my-id'}('This is element content', [ 'title' => 'This is a title' ]);
...
<div class="my-class" id="my-id" title="This is a title">This is element content</div>
创建不带内容的单个标签
use DecodeLabs\Tagged as Html; $tag = Html::tag('div.my-class'); echo $tag->open(); echo 'Content'; echo $tag->close();
将HTML字符串包装起来,以便在需要Markup
实例的地方使用
use DecodeLabs\Tagged as Html; $buffer = Html::raw('<span class="test">My span</span>');
将脚本数据转储到Html
yield Html::script(Html::raw(json_encode( $some_data )), [ 'type' => 'application/json' ]);
为标记输出准备任意输入
use DecodeLabs\Tagged as Html; $markup = Html::wrap( function() { yield Html::h1('My title'); }, [Html::p(['This is ', Html::strong('mixed'), ' content'])] );
嵌套
您可以通过多种方式嵌套元素
use DecodeLabs\Tagged as Html; // Pass in nested elements via array echo Html::div([ Html::{'span.inner1'}('Inner 1'), ' ', Html::{'span.inner2'}('Inner 2') ]); // Return anything and everything via a generator echo Html::div(function($el) { // $el is the root element $el->addClass('container'); // Nest elements with a single call yield Html::{'header > h1'}('This is a header'); yield Html::p('This is a paragraph'); // Set attributes inline yield Html::{'p[data-target=open]'}('Target paragraph'); // Generator return values are rendered too return Html::{'div.awesome'}('This is awesome!'); });
时间和日期
格式化和包装日期和时间间隔
use DecodeLabs\Tagged as Html; // Custom format Html::$time->format('now', 'd/m/Y', 'Europe/London'); // Locale format // When timezone is true it is fetched from Cosmos::$timezone Html::$time->locale('now', 'long', 'long', true); // Locale shortcuts Html::$time->dateTime('tomorrow'); // medium Html::$time->longTime('yesterday'); Html::$time->shortDate('yesterday'); // ...etc // Intervals Html::$time->since('yesterday'); // 1 day ago Html::$time->until('tomorrow'); // 1 day from now Html::$time->sinceAbs('yesterday'); // 1 day Html::$time->untilAbs('yesterday'); // -1 day Html::$time->between('yesterday', 'tomorrow'); // 1 day
图标
创建字体或SVG图标所需的标记
use DecodeLabs\Tagged as Html; Html::$icon->setFormat('font'); echo Html::$icon->aubergine; // <i class="icon icon-aubergine"></i> Html::$icon->setFormat('svg'); echo Html::$icon->aubergine; // <svg><use xlink:href="#aubergine" /></svg> Html::$icon->setSvgReference('path/to/my/file.svg'); echo Html::$icon->aubergine; // <svg><use xlink:href="path/to/my/file.svg#aubergine" /></svg>
媒体嵌入
规范化从媒体网站共享的嵌入代码
use DecodeLabs\Tagged as Html; echo Html::$embed->video('https://www.youtube.com/watch?v=RG9TMn1FJzc');
已弃用功能
寻找之前在这里的功能?它可能已经被移动到专门的库
XML处理
Tagged的XML操作功能已移动到其自己的项目Exemplar。
内容解析(Tagged::$parse和::$toText插件)
内容转换现在由Metamorph库处理。
许可
Tagged采用MIT许可证。有关完整的许可证文本,请参阅LICENSE。